[RoarCTF 2019]Easy Calc 1
进入主页面是一个计算器,可以计算

右键源代码发现提示信息,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值分别为46和47

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的更多相关文章
- [RoarCTF 2019]Easy Calc
[RoarCTF 2019]Easy Calc 题目 题目打开是这样的 查看源码 .ajax是指通过http请求加载远程数据. 可以发现有一个calc.php,输入的算式会被传入到这个php文件里,尝 ...
- buuoj [RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性)
web [RoarCTF 2019]Easy Calc(利用PHP的字符串解析特性) 先上源码 <?phperror_reporting(0);if(!isset($_GET['num'])){ ...
- BUUCTF | [RoarCTF 2019]Easy Calc
看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...
- [原题复现+审计][RoarCTF 2019]Easy Calc(http协议走私、php字符串解析漏洞)
简介 原题复现: 考察知识点:http协议走私.php字符串解析漏洞 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到 ...
- Web-[RoarCTF 2019]Easy Calc
看看题目内容,一个计算器,并且过滤了非数字的值,查看源码,上了waf,并且在calc.php显示waf的规则 <?php error_reporting(0); if(!isset($_GET[ ...
- [RoarCTF 2019]Easy Calc-协议层攻击之HTTP请求走私
0X01:什么是HTTP请求走私 HTTP请求走私属于协议层攻击,是服务器漏洞的一种. HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术.使攻击者可以绕过安全控制, ...
- [RoarCTF 2019]Easy Java
0x01知识点: WEB-INF/web.xml泄露 WEB-INF主要包含一下文件或目录: /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命 ...
- 刷题[RoarCTF 2019]Easy Java
前置知识 WEB-INF/web.xml泄露 java web工程目录结构 Servlet访问URL映射配置 由于客户端是通过URL地址访问Web服务器中的资源,所以Servlet程序若想被外界访问, ...
- [RoarCTF]Easy Calc
目录 [RoarCTF]Easy Calc 知识点 1.http走私绕过WAF 2.php字符串解析特性绕过WAF 3.绕过过滤写shell [RoarCTF]Easy Calc 题目复现链接:htt ...
- [RoarCTF 2019]simple_uplod
目录 [RoarCTF 2019]simple_uplod 1.ThinkPHP文件上传 2.upload()多文件上传 ThinkPHP上传文件名暴破 [RoarCTF 2019]simple_up ...
随机推荐
- linux下安装OpenJDK 1.8
1. 使用yum查找jdk: yum search java|grep jdk [root@iasdasd jvm]# yum search java|grep jdk Repository extr ...
- [OC] APP唤醒,URL Scheme,工程中的 URL Types 和 LSApplicationQueriesSchemes
1.网页唤醒APP: 假设我们有一个APP,名字叫做 "APP甲",需要通过网页唤起 APP甲,我们首先需要在 APP甲的工程文件里配置参数 URL Types: 在 info.p ...
- 快速搭建一个spring cloud 子模板--好记性不如烂笔头
建 application.yml 文件 server: # 服务端口号 port: 7609spring: application: # 服务名称 - 服务之间使用名称进行通讯 name: serv ...
- AJAX-动力节点
AJAX(Asynchronous Javascript And Xml) 传统请求及缺点 传统的请求都有哪些? 直接在浏览器地址栏上输入URL. 点击超链接 提交form表单 使用JS代码发送请求 ...
- NOIP2015 pj
达成成就!--尝试不看题解的情况下用cpp打完了一套NOIP pj 题目全部在luogu上-- P2669 金币 题目描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第 ...
- GitLab版本定版
定版指令: git add -Agit commit -m ""git push origin develops:V5.2
- JDBC——连接SQL Server环境配置
JDBC:使用JAVA语言操作关系型数据库的API.是一套标准的接口. 步骤 1.创建工程,导入驱动jar包 2.注册驱动:Class.forName("com.mysql.jdbc.Dri ...
- 基础框架SSM导学
SSM Spring SpringMVC Maven高级 SpringBoot MybatisPlus spring官网:http://spring.io
- 5-3 掌握 egg.js + 云 mongodb
1 egg.js 1.1 初始化 初始化和项目启动方法 # 初始化 $ mkdir egg-example && cd egg-example $ npm init egg --typ ...
- 08 分布式计算MapReduce--词频统计
def getText(): txt=open("D:\\test.txt","r").read() txt=txt.lower() punctuation = ...