嘶吼CTF easy calc

进入之后可以看到我们需要输入一个计算式来得到答案,burpsuite进行抓包之后发现页面来自于calc.php

我们直接访问calc.php页面
发现源代码泄露

可以看到当我们没有输入num值的时候就会显示源代码,否则对输入的num进行eval命令执行,在命令执行之前有黑名单过滤。
我们需要绕过黑名单进行命令执行。
虽然是这样,但是ls不在黑名单执行里面,所以我们先ls一下

返回了403界面。
这里很可能是因为有waf设备保护着输入的参数,这里我们利用php的特性,使用php字符串解析绕过WAF。
因为防护设备检测的是num,而php需要将所有参数转换为有效的变量名,所以在解析查询字符串时,php会做两件事情:
1,删除初始空格
2,将某些字符转换成下划线(包括空格)
所以我们将传入的变量改为%20num,即空格num,故WAF不会对其进行检测,而php在处理的时候又会将其还原成num。

这样成功绕过了服务器端的WAF,紧接着我们要绕过黑名单来读取flag

使用scandir函数进行读取,查看当前目录下需要使用/符号,我们使用chr函数来绕过。
所以查看当前目录下的payload为:
?%20num=print_r(scandir(chr(47)))

可知flag在flagg文件下,于是我们使用file_get_contents()函数进行读取
payload为
?%20num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
flag到手

嘶吼CTF easy calc的更多相关文章
- 嘶吼CTF2019总结(Web部分题目复现以及部分杂项)
		
easy calc 这次的比赛自己一题都没有做出来,赛后看题解的时候很难受,其实有很多东西自己其实是可以做出来的,但是思路被限制了,可能这就是菜吧. 首先web题目就是一个easy calc,emmm ...
 - 划水嘶吼misc
		
划水嘶吼misc [题目描述]: 开局一张图,flag全靠编 [题目writeup]: 瞅半天,瞅到二维码 然后用potplayer按帧查找到skr二维码 通过PS自动调整对比度,扫出key1,2,3 ...
 - [RoarCTF]Easy Calc
		
目录 [RoarCTF]Easy Calc 知识点 1.http走私绕过WAF 2.php字符串解析特性绕过WAF 3.绕过过滤写shell [RoarCTF]Easy Calc 题目复现链接:htt ...
 - [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'])){ ...
 - [原题复现+审计][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[ ...
 - BUUCTF | [RoarCTF 2019]Easy Calc
		
看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...
 - BUUCTF-Web Easy Calc
		
要素察觉 打开calc.php发现源码 过滤了很多字符.题目一开始提示了有waf,最后通过eval实现计算功能.考虑利用该函数读取flag文件,先尝试弹个phpinfo 被waf拦截,在num参数前面 ...
 
随机推荐
- JSON&AJAX
			
JSON 定义:JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式.它基于 ECMAScript(欧洲计算机协会制定的 JS 规范)的一个子集 ...
 - kudu集群:kudu_master、kudu_tserver服务及数据的迁移(根据官网总结)
			
是不是都需要一个声明,来一个: 声明: 本文只是总结本人本地模拟环境测试,并没有经过严格的线上测试.请自己在本地严格测试之后慎重使用在生产环境! kudu_master.kudu_tserver服务迁 ...
 - C语言中利用clock设计一个简单的定时器
			
time.h是C/C++中的日期和时间头文件,用于需要时间方面的函数,定义了四个变量类型.两个宏和各种操作日期和时间的函数. 其中计时函数是clock(),而与其相关的数据类型是clock_t.clo ...
 - 某C++神作,就100句话而已
			
假设p是指针,当delete p;时,后面一定要p=NULL将p指向空 cin cout cerr 都是iostream类型的对象.cout<<"hello world" ...
 - POSIX信号量与互斥锁实现生产者消费者模型
			
posix信号量 Link with -lpthread. sem_t *sem_open(const char *name, int oflag);//打开POSIX信号量 sem_t *sem_o ...
 - Android状态栏与布局重叠解决方案
			
问题起因: 同组的同事将项目全局设置成了沉浸式,对于我这个半路过来开发的人 可真是头疼呵~ 没办法,那就我自己添加一个头吧.也可以在布局中取消沉浸式,不过我这个是在fragment中,为了不修改之前的 ...
 - Spring源码之@Lazy和预实例化
			
https://www.cnblogs.com/yanze/p/10243348.html 懒加载优缺点 优点:懒加载,对象使用的时候才去创建:启动速度快,节省资源 缺点:不利于提前发现错误:初次请求 ...
 - (二)廖师兄springboot微信点餐虚拟机说明文档
			
虚拟机 VirtualBox-5.1.22 系统 CentOS7.3账号 root密码 123456 软件:jdk 1.8.0_111nginx 1.11.7mysql 5.7.17redis 3. ...
 - 干货 MySQL常见的面试题 + 索引原理分析
			
常见的面试必备之MySQL索引底层原理分析: MySQL索引的本质 MySQL索引的底层原理 MySQL索引的实战经验 面试 1)问题:数据库中最常见的慢查询优化方式是什么? 回答:加索引 2)问题: ...
 - python多线程——如何停止一个死循环的线程
			
进程想要执行任务就需要依赖线程.换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程. 那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多 ...