sqli-lab 15到18

发布时间 2023-05-30 16:07:48作者: 米斯特李

第15题

发现不管输入什么都不报错

应该是没有回显的,所以考虑时间盲注:

先判断闭合方式:

建议拿' 、" 、') 、") 、) 、)) 、一个一个试:

时间盲注应该这样试:

uname=11&passwd=1' or sleep(4)-- -&submit=Submit

 这里注意,刚开始试了很多次全都没有反应,查了一下,原来是考虑欠周:
在get方式传参中如果写成id=1' and sleep(2)-- -会有反应,因为id=1本来就是正确的,但在post方式中不能直接使用and,因为并不存在这个username=1,password=1的用户,所以这里应该用or

不知道其他那些教程里面使用and是怎么成功的。

知道是时间盲注,现在使用bp判断闭合方式:

在bp里sleep之后会直接卡掉,但也无所谓,有反应就行

 可以看到为' 时发生了反应

 闭合方式为'

之后时间盲注:

使用if函数:

1' or if(length(database())=8,sleep(2),1)-- -

 爆库名:

 才发现并不会一直白屏,而是休眠两秒后恢复正常。

就这样一直判断。。。

 or if(mid((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1)='e',sleep(1),1);

  mid函数可以换成substr。。。

强烈建议运行之前现在自己的datagrip里试试有没有错误,不然这里看着很麻烦

 之后不再演示

到了时间盲注其实学个思想就行,没必要手动一个一个试了,不然这得什么时候搞完,

kali

 第16题

与上一题基本一样,除了闭合方式:

 为”)闭合方式。

其余交给kali吧。。。

第17题

这道题开始有点难度了

打开是这个界面

 此时无论输入什么都是没有反应的,

查看源码:可以看到是有个输入检测函数的,

 但这个检测函数只对uname进行了过滤。

 看他的查询函数:

是首先通过uname对username和password查询,然后对于查到的用户更新密码,密码为你输入的password

 所以前提是输入一个正确的username

这里已经知道一个争取的username:Dumb,如果在不知道这个用户名的情况应该怎么做?不知道

先找闭合方式:

 1' or 1=1-- -不报错,所以是'闭合

 可以看到是只对报错信息有回显,因此是报错注入

uname=Dumb&passwd=1' or extractvalue(1,concat(0x7e,database()))-- -&submit=Submit

 上道题说过post方式注入中,最好用or别用and,但这道题好像用or的话不会有显示:

 使用and吧。。

uname=Dumb&passwd=1' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 1,1)))-- -&submit=Submit

其他与之前一样了。

第18题

查看源码,这次是对username和password都进行了check

 因此不能对username和password进行注入了,

查看源码:

 发现还有一条sql语句,是插入uagent的,可以考虑user-agent注入:

这道题应该是我环境有问题,我useragent尝试了各种payload都没有反应,

 先过了吧这道题