无参rce
無(wú)參rce
前幾天比賽中遇到的一道題,get了無(wú)參rce的一種新的方法
121.196.32.184:12001
基礎(chǔ)繞過(guò)
訪問(wèn)./3b8cf4731c36d20776c76e20f9c774c7.php
參考鏈接https://www.jianshu.com/p/7355a5ab4822
解碼提示
訪問(wèn)得到一個(gè)php文件
html>$file=$_POST['file'];if($file!="/xxx")die("你需要知道寫入的文件名!!!!!我猜你知道到這個(gè)文件叫什么,記得加上絕對(duì)路徑");if(';'=== preg_replace('/[^\W]+\((?R)?\)/', '', $data)) {echo"great!!!!你需要看看源碼";file_put_contents($file,"");}</html>>代碼非常清晰,首先
preg_replace('/[^\W]+\((?R)?\)/','',$_GET['code'])代碼會(huì)將KaTeX parse error: Undefined control sequence: \W at position 21: …'code']中滿足正則/[^\?W?]+((?R)?)/的部分,替…_GET[‘code’]);否則什么都不做。那么思路很明確,我們弄清楚正則即可進(jìn)行RCE
[^\W]+\((?R)?\)首先是[\W],對(duì)于\W,其意思等價(jià)于[A-Za-z0-9_]。那么我們知道,我們的input必須以此開頭
然后是括號(hào)匹配( … )括號(hào)中間為(?R)?意思為重復(fù)整個(gè)模式。簡(jiǎn)單理解,我們可以輸入以下類型a(b(c()))
但我們不能加參數(shù),否則將無(wú)法匹配a(c,d)
所以正則看完,題目的意思非常明確了:我們只能input函數(shù),但函數(shù)中不能使用參數(shù),否則判斷句右邊經(jīng)過(guò)替換,將不止剩余分號(hào);
漏洞點(diǎn)分析
那么有沒(méi)有辦法通過(guò)無(wú)參數(shù)函數(shù),達(dá)到RCE的目的呢?答案顯然是不可能的,沒(méi)有參數(shù),怎么傳遞我們需要執(zhí)行的指令呢?
所以我們的目標(biāo)也變得很明確:通過(guò)我們傳遞的參數(shù)來(lái)進(jìn)行RCE,有如下函數(shù)
get_defined_vars(),達(dá)到RCE的目的。
get_defined_vars()此函數(shù)返回一個(gè)包含所有已定義變量列表的多維數(shù)組,這些變量包括環(huán)境變量、服務(wù)器變量和用戶定義的變量。
測(cè)試一下
然后將[“a”]=>string(10)"phpinfo();"提取出來(lái),這里需要用到next();current();end();等相關(guān)函數(shù)具體看鏈接https://www.runoob.com/php/func-array-next.html
這里執(zhí)行一下
執(zhí)行命令
-wfqwopFX-1606457944243)]
執(zhí)行命令
[外鏈圖片轉(zhuǎn)存中…(img-IsXa02vy-1606457944245)]
總結(jié)
- 上一篇: google s2 java开发文档
- 下一篇: 将宇宙最强vscode打造为刷题神器