2016百度杯12月第四場挑戰賽解題過程記錄

2021-07-27 13:50:02 字數 2910 閱讀 1761

這題從入門,到放棄,使用了一天時間,裡面關於sql注入的套路比較深,故記錄下解題過程,並和wp作了一定的結合。

首先訪問鏈結得到了乙個mini-blog的歡迎頁面:

註冊乙個賬號: admin/pass;

發現註冊失敗,嘗試更改乙個使用者名稱註冊,於是使用aaa/aaa:

註冊成功並登陸

登陸成功後可以看到有乙個寫blog的編輯框,風格看起來比較像某editor.

嘗試編輯器上傳附件功能,發現上傳功能損壞,但是爆出了編輯器是kindeditor:

讀完kindeditor原始碼後,發現file_manager_json.php中存在乙個目錄遍歷的引數path,

於是在題目上嘗試構造目錄訪問,果然列出了當前目錄,由此搞清了整個**的目錄,同時發現目標flag.php就位於**根目錄下。

嘗試訪問flag.php提示flag就在這裡,那麼目標就清晰了:如何能夠讀flag.php的內容;

經過多個位置的嘗試,在寫blog的那個輸入框位置發現了乙個注入漏洞。

test-payload: '=' 返回值為1,1'=' 返回值為0,測出注入,那麼問題就在於如何注入了,

通過分析不難確定此處應是一條insert語句用以儲存使用者所寫blog到資料庫中,對這個位置比賽平台過濾的比較嚴密(被各種套路), union select 等試了比較多次,但是都被過濾掉了。

猜想後台sql語句形似:

insert into tablename(a,b,c) values($a,$b,$c);

我們能控制的變數應該有2-3個,分別是使用者名稱/id,blog標題和blog內容;

接下來就是比較難想的乙個注入方法了,在這裡主要有兩個思路,因為insert語句本身不會有回顯,而**的報錯都被遮蔽掉了,所以布林盲注明顯不能夠成立,那麼只有

套路1: select '一句話' into oufile '某.php' 通過資料庫將一句話寫入某個php,然後連webshell

套路2: insert 語句上做手腳,雖然insert語句本身沒有回顯,但是插入的blog會緊接著顯示在第二頁的bloglist上面,由此即便插入某些特別的東西也是可以顯示的。

這裡涉及到insert語句的插入細節:

套路1由於防火牆的存在而不能夠使用,由此只能考慮套路2.

insert into tablea values(a1,b1,c1), (a2,b2,c2) 這句話即將兩個不同的元組插入到tablea中,這個很久不用了結果忘記了。。導致沒能成功利用套路2.

測試payload:

content這麼寫的意思很明確,我猜測insert語句的值類似於: (username,title,content)

於是這裡構造的insert語句類似於 ... values('aaa','testpayload2','test')#注釋掉了

這個payload過去報錯了,這說明猜測的insert欄位有誤,既然不是三個,更不可能是兩個,受控制的部分已經有兩個了,因此推測insert語句的字段數為4.

test-payload3:

title=testpayload3&content=test','x')#

提交,不報錯順利通過,得到驗證,insert語句的四個字段可能為(username, title,content,x) x未知不過無關緊要

接下來就是利用insert語句多條插入的時候了,之所以要用多條插入,一是content欄位的上下文不完全控制在自己手裡,聯合查詢又不能用,insert的限制條件還是非常苛刻的,另外我們發現將x欄位控制在自己手裡的時候插入進去的blogcontent居然不會顯示出來,這個坑真的是。。坑,所以保持第四欄位不動,新建一條插入項,

將真正的payload放在第二條插入語句中:

real_payload: title=payload&content=test','x'),('aaa',(select group_concat(password) from users),'content

這樣即在不影響第二條payload的x欄位的情況下將整個insert語句閉合了,成功插入,這條insert即將users表中的password項全部select出來,不要問我表名和列名是怎麼得到的,這麼常規你就不造爆破一下麼)

於是取得了兩個的md5,拿去反解一下,乙個是aaa,乙個是melody123

拿admin/melody123嘗試登陸一下**,發現用到了乙個manager.php的頁面,

於是不能是別的那只能是必須是..php檔案包含了,乙個lfi,正好前幾天看了表姐的筆記,用php://filter讀一波flag.php,終結。。

百度杯 九月場 再見CMS writeup

1.第一步,肯定是要判斷出cms型別 2.第二步,查詢該cms曾經出現的漏洞 3.第三步,然後利用這些漏洞拿到flag.關於查漏洞這件事,可以利用烏雲映象等安全 乙個可以利用的漏洞是 根據漏洞構造這樣乙個注入語句,判斷能否注入 post資料 truename x 0000 limitword 000...

「百度杯」CTF比賽 九月場 Test

個人收穫 1.連線shell 失敗的時候可以試試多個版本的菜刀,可能是菜刀的問題 2.學會了菜刀資料庫管理的配置 題目介面 有現成的poc search.php?searchtype 5 tid area eval post 1 菜刀鏈結,密碼為1我們用菜刀進行訪問 之前我用另乙個菜刀無法連線,開始...

百度杯2017 二月場 爆破二 三

include flag.php a request hello eval var dump a show source file 還是 審計 乙個乙個來看 flag.php hello的value設定為讀取檔案的函式,讓eval執行這段函式。fread 讀取指定檔案 可安全用於二進位制檔案 str...