成理信安协会部分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();?>"
,在执行你的一句话之前就结束了。 - 所以主要是两个考点,一个是用PHP伪协议把一句话写进去,另一个是把如何绕过die()这个函数。
这里直接奉上p神的博客,仔细读读就都懂了。
https://www.leavesongs.com/PENETRATION/php-filter-magic.html#_1