一、[RoarCTF 2019]Easy Calc

1.题目

2.解题步骤

发现框框…应该是注入题…源码中提示有个waf,继续看源码,发现有个calc.php,进去看看

初步理解应该是用num传参,然后返回计算结果,这个php文件用于过滤非法字符。

被拦下来了,大概是利用num构造一个payload,不能含有字母和非法字符,只能有数字和符号

这里已经不会了,看writeup吧…
先贴效果


可以发现,num和 num仅仅差了一个空格,但是 num就绕过了waf,执行了代码。这是一个利用php字符串解析的漏洞。这个漏洞的产生主要是有两个原因。

  1. 在calc.php中,可以发现是对num变量进行的一个过滤,并没有对 num变量过滤,因此可以对 num进行传参
  2. 由于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.总结
  1. 第一次见这样的漏洞,利用php的字符串解析漏洞,能直接绕waf,还是很危险的
  2. 熟悉了一些必要的函数,学会了php的ascii绕过(上次的还是sql的ascii绕过,用法有区别),涨姿势了
  3. 做题要认真一些…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相关推荐

  1. 合天每周CTF学习笔记 — 神奇的磁带

    这是真小白的第一次学习,做个笔记记录一下思路和辅助知识. 思路 整体思路是借助提供的提示和寻找隐藏的提示. 1.查看页面源码 根据实验指导书说明,首先访问攻击的网页,并查看源码. 2.查看源码中的提示 ...

  2. 我的ctf学习笔记 misc(二)

    1.easypdf 给了一个pdf文件,图片将flag隐藏了 2.损坏的图片 给了一个不能打开的png,首先尝试修复,用winhex打开,发现首尾格式是错误的,整个顺序需要颠倒过来,在储存会发现图片变 ...

  3. CTF学习笔记一——RSA加密

    RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,"由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息, ...

  4. CTF学习笔记——SQL注入

    SQL注入 sql注入的分类 1)可回显的注入 可以联合查询的注入 报错注入 通过注入进行DNS请求,从而达到可回显的目的 2)不可回显的注入 bool盲注 时间盲注 3)二次注入 通常作为一种业务逻 ...

  5. CTF学习笔记——IncludePing Ping Ping

    一.[ACTF2020 新生赛]Include 1.题目 2.解题步骤 点进去看了一下 根据题目猜测,应该是和php的文件包含漏洞有关-尝试了一下显示phpinfo,意料之中的失败了,看wp才了解到, ...

  6. CTF学习笔记:misc

    1.来题中等的吧: 下载压缩后,得到一张图片 仔细观察上面的青色条纹,可以发现这是摩斯密码,把它记录下来: .- .-.. .--. .... .- .-.. .- -... 在线网站上翻译得到fla ...

  7. CTF学习笔记——sql注入(2)

    一.[SUCTF 2019]EasySQL 1.题目 2.解题步骤 看标题就知道是关于sql注入的题目.老规矩,先跑一下sqlmap,再用1' or 1=1 #试试. Nonono. 不死心再试一下别 ...

  8. CTF学习笔记20:iwebsec-文件上传漏洞-05-htaccess文件上传

    本练习最终只能上传图片,关键要让图片文件可以调用,也就是作为php解析. 一.通过之前的方法均不能上传php文件 通过burpsuite配合改扩展名.大小写.双写等手段均不上传成功. 二.编写并上传. ...

  9. CTF学习笔记22:iwebsec-文件上传漏洞-07-条件竞争文件上传

    一.正常上传php文件被删除 你这么暴力,刚上传就删除,解决思路就是不停地上传,你要接收文件.判断文件.删除文件总要时间吧: 那我见缝插针,不停地调用上传的文件,一旦成功就写入另一ma,也就是ma中m ...

最新文章

  1. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换
  2. 移动开发的罗曼蒂克消亡史
  3. 深入研究Servlet线程安全性问题
  4. 用asp.net 2.0实现网站二级域名(转)
  5. linux-shell命令之file【辨识文件类型】
  6. MySQL 复制滞后怎么办?
  7. (9)Node.js 内置模块
  8. 你是农村人吗?小时候没有自来水,每天喝的是什么水?
  9. TCP/IP协议 TCP包深入理解
  10. 离散数学学习心得(一)逻辑和证明
  11. 中国个人企业征信体系介绍
  12. 智库说 | 杨宁:从城市管理走向城市治理 大数据将发挥更大作用
  13. 二维彩虹和你一起看见更大的世界
  14. html 图片展示 3d,利用CSS3制作简单的3d半透明立方体图片展示
  15. 爬取图片到mysql数据库_爬取微博图片数据存到Mysql中遇到的各种坑\mysql存储图片\爬取微博图片...
  16. 随机森林算法学习(RandomForest)
  17. S32K系列S32K144学习笔记——ADC
  18. java mybatis的SpringBoot博客论坛管理系统
  19. Unity中通过场景切换但音乐继续播放
  20. iOS-No such file or directory没有这个文件

热门文章

  1. Excel VBA:数据管理与维护
  2. 【软考软件评测师】2019综合知识历年真题
  3. Lr预设(手机+电脑):复古巧克力色电影灯室棕褐色摄影Lightroom滤镜调色预设
  4. 澳洲电源和电池充电器对应标准的公告将强制执行2022年6月15日起
  5. 音符起始点检测(音频节奏检测)(5)
  6. JVM 逃逸分析 (史上最全)
  7. 小数据 vs. 大数据
  8. TP-link WR720N路由器刷入OpenWrt
  9. BUUCTF:[SWPU2019]Network
  10. HDU - 6070 Dirt Ratio (二分 + 线段树)