1. 程式人生 > 實用技巧 >成理信安協會部分PHP偽協議題目

成理信安協會部分PHP偽協議題目

PHP偽協議,是簡單而又重要的知識點。這裡奉上幾道協會裡的出的PHP偽協議題目,加深一下印象。

BACK DOOR

上原始碼

<?php
if(isset($_GET['show_source']))
    highlight_file(__file__);
$sandbox = 'sandbox/'.md5($_SERVER['REMOTE_ADDR']).'/';
@mkdir($sandbox);
chdir($sandbox);

$filename =@$_POST['filename'] ?: "";
$code = @$_POST['code'] ?: "";
$code = "<?php die('嘿嘿嘿,我就喜歡你看不慣但又幹不掉我的樣子');?>".$code;  // I added it


if($filename)
{
    if(file_put_contents($filename, $code))
    {
        echo $sandbox.$filename;
    }
}

程式碼審計

  • POST傳filename和code,然後就會寫入。但是很煩的是你要傳的code前面要被加個,在執行你的一句話之前就結束了。
  • 所以主要是兩個考點,一個是用PHP偽協議把一句話寫進去,另一個是把如何繞過die()這個函式。
    這裡直接奉上p神的部落格,仔細讀讀就都懂了。

https://www.leavesongs.com/PENETRATION/php-filter-magic.html#_1