web_ping的writeup

weixin_34037977發表於2018-08-19

web_ping是cc給我出的題目之一,為了降低難度,把題目的原始碼也一起放出來了。下面是原始碼:

 <?php
$target = @$_REQUEST[ 'ip' ];
if(!$target){
    show_source(__FILE__);
}
$target=trim($target);
$substitutions = array(
        '&'  => ' ',
        ' ' => '',
        ';' => ' ',
        '|' => ' ',
        '-'  => ' ',
        '$'  => ' ',
        '('  => ' ',
        ')'  => ' ',
        '`'  => ' ',
        '||' => ' ',
        '<>' => ' ',
        'bash' => ' ',
        '>' => ' ',
        'wget' => ' ',
        'cat' => ' ',
        'cd' => ' ',
        '../' => ' ',
        '/' => ' ',
        'rm' => ' ',
        '>>' => ' ',
        'echo' => ' ',
        'curl' => ' ',
        'dd' => ' ',
        'cp' => ' ',
    );

// Remove any of the charactars in the array (blacklist).

$target = str_replace( array_keys( $substitutions ), $substitutions, $target );
// var_dump($target);
// Determine OS and execute the ping command.
if(!preg_match('/web[2-6]/i',$target))
{
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {    
    $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        $cmd = shell_exec( 'ping -c 1 ' . $target );
    }
    echo  "<pre>{$cmd}</pre>";
}

?> 

因為題目關聯其他方面,所以原始碼中有一些內容是無意義的,可能會誤導讀者。題目的思路應該是繞過ping命令,繼續執行其他命令來讀取flag.php中的內容,當然了,從原始碼中可以看出有些命令被過濾掉了,肯定是不能用的。
首先,傳參ip=127.0.0.1%0Als,這裡%0A是換行的意思,因為原始碼中有shell_exec()這個函式,所以可以執行linux命令,ls是一個linux命令,是把檔案都列舉出來,此時可以看到兩個檔案。

13017291-02f16ee8c33e05fd.png
1.png

再用linux讀取檔案的命令來讀取flag.php,但是有些命令被過濾了,比如cat,不過不要緊,linux讀取檔案的命令有很多,例如:
13017291-e95b04557885b8fd.png
2.png

問題又來了,讀取檔案的格式都是命令+空格+引數,空格也被過濾了,所以還要找到替代空格的字元,也有很多,例如:
1、/**/
2、括號
3、%09
所以,把url寫成
http://104.224.163.5/CTF/web_ping/?ip=127.0.0.1%0Ahead/**/flag.php
http://104.224.163.5/CTF/web_ping/?ip=127.0.0.1%0Amore()flag.php
http://104.224.163.5/CTF/web_ping/?ip=127.0.0.1%0Amore%09flag.php
這裡有一個問題,head是不能用()和%09的,我在除錯的時候發現的,cc的解釋是這樣的,head不能用括號是因為括號被過濾掉了,more可以用括號是因為括號過濾之後變成了空格,我其實還是有點不明白……讀取後的介面是這樣的:
13017291-b23d551321b0c8c2.png
3.png

右鍵檢視原始碼就可以找到flag:
13017291-bb7b1ce61bf376f8.png
4.png

相關文章