CTF学习笔记——Easy Calc
一、[RoarCTF 2019]Easy Calc
1.题目
2.解题步骤
发现框框…应该是注入题…源码中提示有个waf,继续看源码,发现有个calc.php,进去看看
初步理解应该是用num传参,然后返回计算结果,这个php文件用于过滤非法字符。
被拦下来了,大概是利用num构造一个payload,不能含有字母和非法字符,只能有数字和符号
这里已经不会了,看writeup吧…
先贴效果
可以发现,num和 num仅仅差了一个空格,但是 num就绕过了waf,执行了代码。这是一个利用php字符串解析的漏洞。这个漏洞的产生主要是有两个原因。
- 在calc.php中,可以发现是对num变量进行的一个过滤,并没有对 num变量过滤,因此可以对 num进行传参
- 由于php的字符串解析特性,在解析php字符串时,会自动将空格过滤掉,因此传递的参数依旧是num。
在calc.php文件的源码中,可以看到最后一句会执行num的语句的内容。因此我们只需要向 num这个变量传递代码就能执行了。
接下来要认识几个函数:
1.void var_dump ( mixed $expression [, mixed $... ] )
用于输出变量的相关信息。(和echo差不多)
参数名 | 描述 |
---|---|
$expression | 你要输出的变量 |
2.scandir(directory,sorting_order,context)
返回指定目录中的文件和目录的数组。
参数名 | 描述 |
---|---|
directory | 必需。规定要扫描的目录 |
sorting_order | 可选。规定排列顺序。默认是 0,表示按字母升序排列。如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果 |
context | 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项 |
3.file_get_contents(path,include_path,context,start,max_length)
把整个文件读入一个字符串中。
参数名 | 描述 |
---|---|
path | 必需。规定要读取的文件。 |
include_path | 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。 |
context | 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。 |
start | 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。 |
max_length | 可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。 |
接下来,先使用scandir()函数去访问根目录下的所有文件,并使用void var_dump ()函数显示出来:
很遗憾被过滤了,使用ascii码绕过
查看根目录下文件,发现有f1agg,使用file_get_contents()访问。这次不浪费时间,同样使用ascii码绕过
得到flag。(文件名是f1agg,没看出来又检查了半天…)
3.总结
- 第一次见这样的漏洞,利用php的字符串解析漏洞,能直接绕waf,还是很危险的
- 熟悉了一些必要的函数,学会了php的ascii绕过(上次的还是sql的ascii绕过,用法有区别),涨姿势了
- 做题要认真一些…f1agg我看成flagg,又查了好半天
4.参考资料
- [RoarCTF 2019]Easy Calc(http走私 && 利用PHP的字符串解析特性Bypass)_a3320315的博客-CSDN博客
- [RoarCTF 2019]Easy Calc_沐目的博客-CSDN博客
- Web-[RoarCTF 2019]Easy Calc - 高诺琪 - 博客园
CTF学习笔记——Easy Calc相关推荐
- 合天每周CTF学习笔记 — 神奇的磁带
这是真小白的第一次学习,做个笔记记录一下思路和辅助知识. 思路 整体思路是借助提供的提示和寻找隐藏的提示. 1.查看页面源码 根据实验指导书说明,首先访问攻击的网页,并查看源码. 2.查看源码中的提示 ...
- 我的ctf学习笔记 misc(二)
1.easypdf 给了一个pdf文件,图片将flag隐藏了 2.损坏的图片 给了一个不能打开的png,首先尝试修复,用winhex打开,发现首尾格式是错误的,整个顺序需要颠倒过来,在储存会发现图片变 ...
- CTF学习笔记一——RSA加密
RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,"由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息, ...
- CTF学习笔记——SQL注入
SQL注入 sql注入的分类 1)可回显的注入 可以联合查询的注入 报错注入 通过注入进行DNS请求,从而达到可回显的目的 2)不可回显的注入 bool盲注 时间盲注 3)二次注入 通常作为一种业务逻 ...
- CTF学习笔记——IncludePing Ping Ping
一.[ACTF2020 新生赛]Include 1.题目 2.解题步骤 点进去看了一下 根据题目猜测,应该是和php的文件包含漏洞有关-尝试了一下显示phpinfo,意料之中的失败了,看wp才了解到, ...
- CTF学习笔记:misc
1.来题中等的吧: 下载压缩后,得到一张图片 仔细观察上面的青色条纹,可以发现这是摩斯密码,把它记录下来: .- .-.. .--. .... .- .-.. .- -... 在线网站上翻译得到fla ...
- CTF学习笔记——sql注入(2)
一.[SUCTF 2019]EasySQL 1.题目 2.解题步骤 看标题就知道是关于sql注入的题目.老规矩,先跑一下sqlmap,再用1' or 1=1 #试试. Nonono. 不死心再试一下别 ...
- CTF学习笔记20:iwebsec-文件上传漏洞-05-htaccess文件上传
本练习最终只能上传图片,关键要让图片文件可以调用,也就是作为php解析. 一.通过之前的方法均不能上传php文件 通过burpsuite配合改扩展名.大小写.双写等手段均不上传成功. 二.编写并上传. ...
- CTF学习笔记22:iwebsec-文件上传漏洞-07-条件竞争文件上传
一.正常上传php文件被删除 你这么暴力,刚上传就删除,解决思路就是不停地上传,你要接收文件.判断文件.删除文件总要时间吧: 那我见缝插针,不停地调用上传的文件,一旦成功就写入另一ma,也就是ma中m ...
最新文章
- Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
- 移动开发的罗曼蒂克消亡史
- 深入研究Servlet线程安全性问题
- 用asp.net 2.0实现网站二级域名(转)
- linux-shell命令之file【辨识文件类型】
- MySQL 复制滞后怎么办?
- (9)Node.js 内置模块
- 你是农村人吗?小时候没有自来水,每天喝的是什么水?
- TCP/IP协议 TCP包深入理解
- 离散数学学习心得(一)逻辑和证明
- 中国个人企业征信体系介绍
- 智库说 | 杨宁:从城市管理走向城市治理 大数据将发挥更大作用
- 二维彩虹和你一起看见更大的世界
- html 图片展示 3d,利用CSS3制作简单的3d半透明立方体图片展示
- 爬取图片到mysql数据库_爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片...
- 随机森林算法学习(RandomForest)
- S32K系列S32K144学习笔记——ADC
- java mybatis的SpringBoot博客论坛管理系统
- Unity中通过场景切换但音乐继续播放
- iOS-No such file or directory没有这个文件