eval $1=$wan_name是什么意思
时间: 2023-12-31 07:03:54 浏览: 37
这是一个 Bash 脚本命令,它的作用是将一个名为 "$wan_name" 的变量的值赋给一个由 $1 指定的变量。这里的 $1 是一个位置参数,它表示传递给脚本的第一个参数。因此,当您调用脚本并传递一个变量名作为参数时,该命令将会把 $wan_name 的值赋值给传递的变量。例如,如果您调用脚本并传递变量名 "my_var",那么该命令将会把 $wan_name 的值赋值给 my_var 变量。
相关问题
<?php $allow_ext = array('png','jpg','gif'); $file = $_FILES['file']['name']; $file_info = pathinfo($file); var_dump($file_info); $file_ext = $file_info['extension']; if(!in_array($file_ext, $allow_ext)){ exit("error extension"); } $news = time(); $filepath = './uploads/'; $newname = md5(md5($news)).'.'.$file_ext; $tmp_name=$_FILES['file']['tmp_name']; $filename=$filepath.$newname; if(move_uploaded_file($tmp_name,$filename)) { $content = file_get_contents($filename); $content = preg_replace('/<\?php|\?>/i', '_', $content); $content = preg_replace('/php/i', '', $content); $content = preg_replace('/eval/i', '_', $content); $content = preg_replace('/assert/i', '_', $content); $content = preg_replace('/ev/i', '_', $content); $content = preg_replace('/system/i', '_', $content); $content = preg_replace('/as/i', '_', $content); $content = preg_replace('/call/i', '_', $content); $content = preg_replace('/replace/i', '_', $content); $content = preg_replace('/func/i', '_', $content); file_put_contents($filename, $content); $data['success'] = 1; $data['message'] = 'æˆåŠŸ'; $data['url'] = $filename; }else{ $data['message']='ä¸Šä¼ å¤±è´¥!'; } echo json_encode($data); ?>
这段代码是一个 PHP 文件上传的示例。它首先定义了允许上传的文件扩展名数组 `$allow_ext`,然后通过 `$_FILES` 数组获取上传文件的原始名称,并使用 `pathinfo()` 函数获取文件信息。接下来,它将获取到的文件扩展名与允许的扩展名进行比较,如果不在允许的范围内,则输出 "error extension" 并终止程序。
如果文件扩展名允许上传,则会生成一个新的文件名 `$newname`,这里使用了时间戳和 MD5 哈希来生成唯一的新文件名,并将其保存在指定的文件夹路径 `$filepath` 中。
然后,它使用 `move_uploaded_file()` 函数将临时文件移动到指定的路径中。接下来,它会读取上传文件的内容,并使用一系列正则表达式替换操作来过滤一些敏感关键词(如 PHP 标签、eval、assert 等),并将过滤后的内容重新写入文件。
最后,它会将上传结果以 JSON 格式输出,包含成功标识 `success`、消息 `message` 和上传文件的 URL `url`。
需要注意的是,这段代码仅用于演示上传过程,并没有涉及其他安全性措施,例如对上传文件的类型、大小、目录权限等进行验证和限制。在实际应用中,需要根据具体需求和安全考虑添加相应的验证和过滤机制。
<?php error_reporting(0); class Welcome{ public $name; public $arg = 'oww!man!!'; public function __construct(){ $this->name = 'ItS SO CREAZY'; } public function __destruct(){ if($this->name == 'welcome_to_NKCTF'){ echo $this->arg; } } } function waf($string){ if(preg_match('/f|l|a|g|*|?/i', $string)){ die("you are bad"); } } class Happy{ public $shell; public $cmd; public function __invoke(){ $shell = $this->shell; $cmd = $this->cmd; waf($cmd); eval($shell($cmd)); } } class Hell0{ public $func; public function __toString(){ $function = $this->func; $function(); } } if(isset($_GET['p'])){ unserialize($_GET['p']); }else{ highlight_file(FILE); } ?>我应该怎么注入攻击,用于教学
请注意,我作为AI语言模型不能诱导或者帮助任何形式的攻击行为。以下内容仅用于教学目的。
首先,这段代码中存在一个反序列化漏洞,可以通过构造一个恶意的序列化对象来执行任意代码。因此,首先需要构造一个payload,使用序列化函数将攻击代码序列化并将其作为参数传递给反序列化函数。
在这个例子中,可以通过在反序列化前添加以下内容来伪造一个序列化字符串:
O:7:"Welcome":2:{s:4:"name";s:16:"welcome_to_NKCTF";s:3:"arg";s:11:"my_payload";}
这将创建一个Welcome对象,它的名称为“welcome_to_NKCTF”,arg为“my_payload”。
接下来,需要构造一个恶意函数并将其传递给这个对象。由于类名、方法名和参数都被限制了,我们可以选择Happy类中的__invoke()方法。该方法接受一个字符串作为参数,将其传递给被调用的shell函数,然后执行该函数的输出。因此,我们可以将攻击代码作为字符串传递给该函数,并使用反引号(`)将其封装在shell()函数中,以便能够直接执行它。最后,我们需要检查并绕过输入过滤函数waf(),这可以通过传递包含非法字符的字符串来完成,触发die语句并终止程序的执行。
以下是构造的payload:
O:7:"Welcome":2:{s:4:"name";s:16:"welcome_to_NKCTF";s:3:"arg";s:71:"$obj = new Hell0(); $obj->func = create_function('', '`{$_GET["cmd"]}`'); echo $obj;";}
这个payload将创建一个Welcome对象,其中arg为一个包含恶意代码的字符串,这里我们创建了一个Hell0对象,将恶意代码作为匿名函数传递给其func属性,并使用echo打印出来。
最后,我们将payload作为参数传递给反序列化函数,访问该页面时将触发攻击代码的执行,从而可以尝试在目标服务器上执行任意命令,窃取敏感数据等攻击行为。
请注意,在真实环境中执行此类攻击是不道德的、非法的、有风险的,本教程仅用于学术目的。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)