zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    解题部分
    题目来源
    攻防世界web高手进阶区
    1.拿到题目以后,发现是一个index.php的页面,并且设备…没有显示完全,此位置可疑。
    2.源代码中发现?page=index,出现page这个get参数,联想到可能存在文件包含读源码的漏洞,尝试读取index.php的页面源码

    通过php内置协议直接读取代码

    /index.php?page=php://filter/read=convert.base64-encode/resource=index.php
    

      

    LFI漏洞的黑盒判断方法:
    单纯的从URL判断的话,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼的时候,可能存在文件包含漏洞。
    此处,因为源码中有提示?page=index,所以读一下index.php中的源码
    3.对源码进行base64解密


    得到源码后开始审计

    //方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试
    if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
    
    echo "<br >Welcome My Admin ! <br >";
    
    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];
    
    if (isset($pattern) && isset($replacement) && isset($subject)) {
    preg_replace($pattern, $replacement, $subject);
    }else{
    die();
    }
    }
    

      

    此处存在preg_replace函数,尝试测试是否存在命令注入漏洞
    函数作用:搜索subject中匹配pattern的部分, 以replacement进行替换。
    此处明显考察的是preg_replace 函数使用 /e 模式,导致代码执行的问题。也就是说,pat值和sub值相同,rep的代码就会执行。
    XFF改成127.0.0.1之后,GET进来三个参数。这里调用了preg_replace函数。并且没有对pat进行过滤,所以可以传入"/e"触发漏洞,触发后replacement的语句是会得到执行的,首先执行一下phpinfo


    执行成功
    然后使用system(“ls”)尝试获取文件目录


    使用cd进入目标文件
    system(“cd+s3chahahaDir/flag+%26%26+ls”)
    为了避免编码问题,此处不能使用空格隔开,而是使用+,%26%26为&&,意思是当前面命令执行成功时,继续执行后面的命令。


    最后使用cat命令获取flag.php中的文件
    成功获取flag。

    总结:
    思路建立:
    1.由?page=index联想到可能存在文件包含读源码的漏洞,使用/index.php?page=php://filter/read=convert.base64-encode/resource=index.php获取index.php中源码
    2.读取源码后,进行代码审计。发现存在preg_replace函数,尝试利用命令执行漏洞,获取到文件目录,最终找到目标文件
    3.读取存在flag的文件,得到flag。
    主要技能点:
    文件包含漏洞
    PHP伪协议中的 php://filter
    preg_replace函数引发的命令执行漏洞
    ————————————————
    版权声明:本文为CSDN博主「CliffordWR」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/CliffordR/article/details/98472156

  • 相关阅读:
    Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    用户画像——“打标签”
    python replace函数替换无效问题
    python向mysql插入数据一直报TypeError: must be real number,not str
    《亿级用户下的新浪微博平台架构》读后感
    【2-10】标准 2 维表问题
    【2-8】集合划分问题(给定要分成几个集合)
    【2-7】集合划分问题
    【2-6】排列的字典序问题
    【2-5】有重复元素的排列问题
  • 原文地址:https://www.cnblogs.com/kuaile1314/p/11652564.html
Copyright © 2011-2022 走看看