三步法搞定CTF中的SQL注入題型


三步法:

一、找到注入點

二、Fuzz出未過濾字符

三、構造payload/寫腳本

 


 

例題1

打開題目:

 

 

第一步,尋找注入點。

輸入用戶名123456,密碼123456,返回結果username error

輸入用戶名admin,密碼123456,返回結果password error

輸入用戶名admin,密碼admin,返回結果password error

(根據提示已知這是道注入題,所以可判斷注入點在用戶名)

 

第二步,fuzz出未過濾字符。

fuzz后,發現%返回結果不同

 

 看到sprintf函數,我們想到php的字符串格式化逃逸漏洞,這個漏洞導致的結果是會將%1$/’變為

此時我們再嘗admin%1$\’ and 1=1%23,結果返回了username error!

 

根據之前測試,and 1=1返回password error!才表示成功。猜測應該是過濾了and,我們再嘗試一下admin%1$\’ or 1=1%23(這里可以再fuzz一次),執行成功了。

 

 

第三步,構造payload/寫腳本。

本題未過濾其他字符,剩下的就是盲注了,腳本大家根據題目自行編寫,最終拿到flag。

 


 

例題2

打開題目:

 

 

第一步,找到注入點。

在搜索框輸入1,返回you are in...

 

在搜索框輸入2,返回you are not in...

 

由此判斷是盲注,注入點是id=1處。

 

第二步,fuzz出未過濾字符。

 

這些是被過濾掉的(空格也被過濾了),or沒有被過濾,我們嘗試輸入1'/**/or/**/'1'='1

 

明明沒有過濾掉or,應該是后端給過濾了,嘗試雙寫繞過:1'/**/oorr/**/'1'='1,還是you are not in...,再用%0a代替/**/(即空格)

 

雖然沒顯示you are in,但是應該是注入成功了。

 

第三步,構造payload/寫腳本。

剩下的就是盲注了,大家根據題目自行編寫就好了,最終拿到flag

 


 

總結:

此類題目的難與易主要在於尋找注入點,對於難一點的題目,出題人會把注入點藏得很隱蔽,需要大家不斷地嘗試,細心地去尋找。


免責聲明!

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



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