SCTF2021 pwn Christmas Wishes 出题思路+预期解

SCTF2021 pwn Christmas Wishes 出题思路+预期解

sctf2021 pwn出题思路
赛题文件+exp: github

题目描述

圣诞许愿!请输入你的愿望吧!现在已经全面支持json格式!(漏洞利用脚本存在直接成功情况,请在本地搭建环境成功后尝试利用远程,远程环境每五分钟重启一次。)
Make a Christmas wish! Please enter your wish! Now has full support for json format! (Vulnerability exploit script exists direct success, please try to exploit the remote after a successful local build environment, remote environment restart every five minutes.)

题目分值:800

解题人数:6

题目文件

出题思路

其实最开始没想做成一个php pwn题目,原本就是写了个json parser, 然后模拟一个大的项目中的用来处理json的一个小组件,里面存在漏洞, 构造个环境去利用。

在写完以后发现了一个parser_string位置的堆溢出漏洞,而且和cve 2021 3156一样。

image-20220103005237802

然后配合链表单向修改可以实现任意地址写,

image.png

在和@AFKL简单讨论这个思路时提到可以直接做成一个php网站,由于本来的代码也是模块化出来的,于是很简单的修改成了一个php拓展,搭建出来目前这个样子。

原本elf版本的在文件 JsonParse_elf, php拓展在文件jsonparser_php

调试方案

因为是个so文件,编写了一个简单的loader进行调试

#include <stdio.h>
#include <dlfcn.h>
#include <string.h>
#include <stdlib.h>

typedef struct reader {
   
    char *buf;
    int size;
    int offset;
} _reader;

int main(){
   
    void *handle = dlopen("modules/jsonparser.so", RTLD_LAZY);
    void *(* Parser)(void *temp);
    _reader *reader = malloc(<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值