进入主页面是一个计算器,可以计算



右键源代码发现提示信息,javascript脚本,其中还有calc.php文件



注释说明了这里引入了waf

尝试访问calc.php



是一道命令执行,尝试输入phpinfo();进行命令执行



提示Forbidden,被拒绝了,应该是被waf拦截了,经过多次尝试发现

数字可以传入,字符和特殊字符不可以传入



这里也就无了方法,参考了大佬的做法,如果绕过waf,使用了php的特性

PHP在接收URL传入的内容时,会将空格去除,将一些特殊字符转换为下划线(转换对象也包含空格)。

这里在num传参和?之后加入一个空格就可以绕过waf

/calc.php?%20num=1
%20就是空格



绕过之后,需要读取flag,本来我想用system()函数读取,可以这里禁用了单引号

可以使用php内置函数scandir()来读取当前目录下的文件;



这里正则匹配也将/给禁用了,所以只能使用chr()函数将ascii值转换为字符串进行拼接得到当前目录下的文件。

./的ascii值分别为4647



payload

/calc.php?%20num=var_dump(scandir(chr(46).chr(47)))

scandir()  获取指定目录下的文件,返回数组
数组需要var_dump()或者print_r()函数进行打印
chr()将ascii值转换为字符串



当前目录下并没有想要的flag文件,可能在根目录

查看根目录下的文件

/calc.php?%20num=var_dump(scandir(chr(47)))



可以看到在根目录下有一个f1agg的文件,注意这里是1

查看该文件

/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

得到flag

收获:

PHP在接收url传入时,会将空格去除,特殊字符转换为下划线,可以利用绕过waf
例如a.php?空格id=1 chr()函数可以将ascii值转换为字符串
scandir()获取指定目录下的文件返回一个数组
file_get_contents()获取指定文件的内容
var_dump()显示数组详细信息

[RoarCTF 2019]Easy Calc 1的更多相关文章

  1. [RoarCTF 2019]Easy Calc

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

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

    web [RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性) 先上源码 <?phperror_reporting(0);if(!isset($_GET['num'])){ ...

  3. BUUCTF | [RoarCTF 2019]Easy Calc

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

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

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

  5. Web-[RoarCTF 2019]Easy Calc

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

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

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

  7. [RoarCTF 2019]Easy Java

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

  8. 刷题[RoarCTF 2019]Easy Java

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

  9. [RoarCTF]Easy Calc

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

  10. [RoarCTF 2019]simple_uplod

    目录 [RoarCTF 2019]simple_uplod 1.ThinkPHP文件上传 2.upload()多文件上传 ThinkPHP上传文件名暴破 [RoarCTF 2019]simple_up ...

随机推荐

  1. linux篇之常用的文本操作命令

    命令                                                    功能 cat .tac                             显示文本文件 ...

  2. 048_Search Lookup

    The Problematic Situation:When you add any lookup in Salesforce on a layout from one object to anoth ...

  3. leecode编写记录

    记录leecode刷题思路 39.组合总数 39. 组合总和 - 力扣(LeetCode) 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candida ...

  4. 三分钟梳理TDengine安装部署的逻辑

      ​小 T 导读:TDengine,是涛思数据面对高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,除却读写性能.存储压缩能力强大之外,还有安装简单.操作难度低等优势.今天我们就从常 ...

  5. linux挂载文件服务器

    smbclient -L //192.168.1.1/ -U administrator //直接挂载 使用下面这条命令就行 sudo mount -t cifs -o username=文件服务器账 ...

  6. docker (mysql 8.+ )主从同步

    1.环境centos7.5  docker 2.下载docker 版本的mysql 启动容器 docker run --name mysql_master -p 3306:3306 -e MYSQL_ ...

  7. grpc start with python

    pip install grpcio grpcio-tools syntax = "proto3"; service FutureData { rpc GetTick(ReqTic ...

  8. Windows使用cmd命令查看当前用户名

    https://blog.csdn.net/qq_46068659/article/details/106037024 查看用户: net user 查看当前用户: whoami

  9. flutter TextField 高度问题(包括使用maxlines自适应高度以及改变textfield组件自定义高度)

    先上代码. Container( color: Colors.blue, constraints: BoxConstraints( minHeight: 10, maxHeight: 20 ), ch ...

  10. CGTime CMTimeRange CMTimeMapping 小结

    CMTime CMTimeRange CMTimeMapping 在使用 AVFoundation 框架处理多媒体资源时,通常会用到一些在 CoreMedia 框架中定义的结构体, 这里对其中描述时间 ...