当前位置: 首页 > news >正文

[RoarCTF 2019]Easy Calc

这题考查的是: 字符串解析特性+目录读取+文件内容读取

字符串解析特性详解:PHP字符串解析特性 ($GET/$POST参数绕过)(含例题 buuctf easycalc)_参数解析 绕过-CSDN博客
ascii码查询表:ASCII 表 | 菜鸟工具 (jyshare.com)

用到的函数有:

print_r()   读取复杂对象,字符串、数组、对象等

chr()        将ascii码值转换为字符

scandir()  读取目录;成功返回文件数组;失败返回false;目录必须用引号包裹

file_get_contents()     将文件内容读取到字符串中;以二进制流读取;图片、字符数据都可用

全是知识盲区啊;又学到了新知识

打开题目发现是一个计算器界面;查看源码发现设置了waf;具体内容不知道什么情况

通过抓包测试发现了calc.php的一段源码信息;里面对输入的一些特殊字符进行了过滤

过滤的字符:空格 ' " \t \r \n ` [ ] $ ^

尝试输入num参数进行测试发现只能输入数字;字母和其他符号都不通过;应该是waf搞的鬼

这里彻底蒙圈了;知识匮乏了;看了大佬的wp发现可以利用字符串解析特性进行绕过

百度了一下php参数的字符串解析特性:1.去掉空白符  2.将某些字符转化为下划线

大佬的文章:PHP字符串解析特性 ($GET/$POST参数绕过)(含例题 buuctf easycalc)_参数解析 绕过-CSDN博客

构造payload:?%20num=phpinfo()

发现成功执行了phpinfo()函数;好了;waf已经绕过了;接下来就是绕过calc.php的过滤操作了

现在不知道flag在哪里;先要读取一下目录文件

由于' " 都被过滤了;所以用chr()进行输入绕过;chr(47)是/

构造payload:print_r(scandir(chr(47)))           读取根目录下的文件信息;然后打印该数组

找到了疑似存放flag的文件名为f1agg

注意:文件名中第二个是数字1;不是l;我在这儿耽搁了好一会儿才发现

构造payload:print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

成功读取到了flag

10

http://www.lryc.cn/news/308519.html

相关文章:

  • 完美解决 git 报错fatal: Not a git repository (or any of the parent directories): .git
  • electron无法设置自己的图标?渲染进程require报错?
  • vscode连接服务器与FileZilla上传到服务器
  • 练习 1 Web EasySQL极客大挑战
  • matlab生成模拟的通信信号
  • Altair® SimLab® 以流程为导向的多学科仿真环境,可连接CAD 的多物理场工作流程
  • Python爬虫-爬取B站番剧封面
  • AI时代的产品文案秘籍:如何用AI提升效率
  • 前端架构: 脚手架通用框架封装之入口文件开发(教程一)
  • 吴恩达《机器学习》学习笔记
  • 【FPGA】线性反馈移位寄存器(LFSR)的Verilog实现
  • yolov8涨点技巧,添加SwinTransformer注意力机制,提升目标检测效果
  • k8s初始化错误
  • adb命名大全
  • 计算机发展史 (5)携手共赴难
  • 一键搞定简历设计!电子版简历制作指南3步走!
  • tcpdump 常用用法
  • Opencv实战(5)平滑处理与常见函数
  • 音频PCM介绍与运用
  • 计算机专业大学四年应该如何规划(Java方向)
  • 算法D27|回溯算法4| 93.复原IP地址 78.子集 90.子集II
  • C++实现XOR加解器
  • Kubernetes的Sevice管理
  • C# 高阶语法 —— Winfrom链接SQL数据库的存储过程
  • vue3+vite+ts配置多个代理并解决报404问题
  • 开创未来:探索OpenAI首个AI视频模型Sora的前沿技术与影响
  • Redis---持久化
  • 从 Flask 切到 FastAPI 后,起飞了!
  • 状态码转文字!!!(表格数字转文字)
  • Pytorch 复习总结 4