因缺思汀的繞過分值:20
- 來源: pcat
- 難度:中
- 參與人數:6479人
- Get Flag:2002人
- 答題人數:2197人
- 解題通過率:91%
訪問解題鏈接去訪問題目,可以進行答題。根據web題一般解題思路去解答此題。看源碼,請求,響應等。提交與題目要求一致的內容即可返回flag。然后提交正確的flag即可得分。web題主要考察SQL注入,XSS等相關知識。涉及方向較多。此題主要涉及源碼審計,MySQL相關的知識。
flag格式 CTF{}
解題鏈接: http://ctf5.shiyanbar.com/web/pcat/index.php
原題鏈接:http://www.shiyanbar.com/ctf/1940
【解題報告】
這是我入門Web開始寫的第六道題,我們點開解題鏈接,發現頁面很簡潔,我們首先第一步還是先看頁面的源碼,也很簡單,總共一行,但是這一行有一點讓我好奇,多了一個source.txt的注釋,說不定這個source.txt有貓膩,先自己想想看,本機可能不存在這個文件,我們通過瀏覽器訪問,將后綴名改成source.txt訪問試試!哎,還真的是,頁面的完整源碼原來在這里!
咱們來對這段代碼進行審計
這一部分很有意思,這里的意思是輸入的值過濾了這些SQL注入語句,像以上這些都是!
我們看這一行,這一行也是一段SQL注入語句,這段的意思是將uname作為條件輸入,然后通過提交的uname去數據庫中查詢uname和pwd,然后把查詢到的pwd和用戶輸入的pwd再進行對比
如果用戶輸入的pwd和數據庫中查詢的pwd相同的話,輸出CTF{XXXXXX},否則輸出其它的!
咱們需要做的就是讓用戶輸入的pwd和數據庫中查詢的pwd相同,這下子我們改怎么辦呢?
咱們可以利用以下SQL注入語句:
' or 1=1 group by pwd with rollup limit 1 offset 2 #
這段語句什么意思呢?
SELECT * FROM interest where uname=' ' or 1=1
group by pwd with rollup (在數據庫中添加一行使得pwd=NULL)
limit 1 (只查詢一行)
offset 2 (從第二行開始查詢)
#注釋
此時密碼只要為空即可查詢成功
這個就是本題的Key了!