xxqweb

24 年 7 月 5 日 星期五
192 字
1 分钟

小学期web题


ezz_rce


text
<?php
show_source(__FILE__);
error_reporting(0);
$a=$_GET['shell'];
$b=$_GET;
$c=$_POST['cmd'];
function waf($c){
    if(preg_match("/cat|flag/is",$c)) {
        exit('不是哥们');
    }}

if(isset($b) and isset($c)){
    waf($c);
    call_user_func($a,$b)($c);
}else{
exit('这是一个简单的传参?');} 这是一个简单的传参?

思路就是使得call_user_func(a,a,b)变成system,最后的($c)就可以填入命令了

call_user_func(a,a,b)($c);

用到一个特别的函数:

text
array_pop()

作用: 弹出数组最后一个元素。
用法:
php

$stack = ["orange", "banana", "apple", "raspberry"];
$fruit = array_pop($stack);
print_r($stack);
解释: array_pop() 函数删除数组的最后一个元素并返回该元素。

所以直接使得shell=system即可


ez_rce


这题的非预期解,仅限php7环境



text
<?php

$a = "这里改成函数或者命令";
echo urlencode(~$a);

这个会生成url加密的东西,拿去替换~(~函数)(~命令);


最终

文章标题:xxqweb

文章作者:huarui

文章链接:https://54huarui.online/posts/xxqweb[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。