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

[HarekazeCTF2019]Easy Notes

知识点:session 反序列化,代码审计

代码分析

flag.php 中有个 is_admin 函数的判断。
在这里插入图片描述
lib.php 中有 is_admin 函数,需要 session['admin'] 为 true,或者通过文件读取的方式。
在这里插入图片描述
index.php 中的 include 并不能使用伪协议读取 flag.php,那么要怎么使得 session['admin']true 呢?是不是可以通过 session 反序列化来绕过,我们可以全局搜一下有没有 session_start

在这里插入图片描述
存在 sesson_start 那么也许真的存在 session 反序列化。
在这里插入图片描述
init.php 中我们可以看到 session 保存的目录,在 /var/www/tmp 下,那这个目录有什么特殊的呢?
在这里插入图片描述
在这里插入图片描述
session 保存的目录竟然和 node 的保存目录一样,那么怎么控制保存的文件名,怎么使得我们上传的内容 session 反序列化后能通过 is_admin 呢?
在这里插入图片描述
我们先看一下它的上传代码,在 add.php 中利用 add_note 函数来处理上传的信息。
在这里插入图片描述
add_note 函数功能就是把接收的 titlebody 以及 hashid,存入 $_SESSION['notes'] 列表里。

在这里插入图片描述
然后当我们访问 export.php 的时候,选择 tar 它就把 $_SESSION[‘notes’] 里的信息转换为 json 数据写入 TEMP_DIR / get_user() . '-' . bin2hex(random_bytes(8)) . '.' . 'tar'; 文档里最后输出出来。
在这里插入图片描述

在这里插入图片描述
我们上传个测试一下,这边用户名是 test,内容如下。

在这里插入图片描述
可以看到确实如讲的一样,那么我们是不是令用户名为 sess_ 也就是 session 文件保存的格式,这样就变成了 sess_-xxxxxx.tar,这个 tar 怎么处理?
在这里插入图片描述
我们只需要令 type.,这样就会因为 str_replace.. 替换为空,自然就消除了,文件名的问题解决了,那内容呢?内容就很简单了,因为 php 默认的 session 反序列化模式是 php 也就是以 | 符号为分界线,前面的是键名后面的是键值.

构造如下 title ,把前面多余的值设为空,设置 adminbool(true)

|N;admin|b:1;

在这里插入图片描述

操作步骤

sess_ 为用户名登录。
在这里插入图片描述
写入反序列化值
在这里插入图片描述
把反序列化值,写入 session 格式的文件里。
在这里插入图片描述
获取我们伪造的 session 文件名。
在这里插入图片描述
修改 PHPSESSID 访问 flag,成功。
在这里插入图片描述
在这里插入图片描述

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

相关文章:

  • Java学习-IO流-字符流-FileReader
  • python攻陷米哈游《元神》数据?详情请看文章。。
  • 【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
  • 如何维护固态继电器?
  • Sprng依赖注入(三):构造方法注入是如何工作的?
  • 「1」指针进阶——详解
  • JS语法让人困惑的点 “==与===”
  • 《狂飙》壁纸大嫂如此惊艳,做成日历壁纸天天看
  • 手机照片删除了怎么恢复
  • maven pom.xml 依赖的scope属性
  • git 的使用方法 (下 - 远程仓库和图形化)
  • Java基础:拼图小游戏
  • 一个跟蘑菇结缘的企业老板
  • 【Leetcode 剑指Offer】第 4 天 查找算法(简单)
  • Jenkins利用docker部署vue项目
  • 【Linux】如何将ntfs硬盘挂载到home目录下并具有读写权限
  • 拖拽删除元素、拖拽排序、拖拽预览图片和拖拽移动元素
  • yarn的global安装命令不生效
  • 如何发布自己的npm包?
  • 达梦数据库 闪回查询
  • java基础学习 day44(多态的优点和劣势)
  • Guna UI WinForms 2.0.4.4 Crack
  • 零售航母沃尔玛公布业绩:喜忧参半
  • Python学习笔记丨while、for、if循环结构基础知识与易错点
  • 【ROS学习笔记1】ROS快速体验输出Hello World
  • 复习git的使用
  • pip命令大全 含换源方法
  • 数据结构与算法之最短路路径与最短路径和动态规划
  • git 本地新建分支并进行合并
  • 2023年DAMA-CDGA/CDGP数据治理认证选择哪家机构好?