sctf2021 data leak 出题思路和题解

本文介绍了sctf2021数据泄露比赛的出题思路,包括题目描述、漏洞位置分析、内存布局详解以及远程执行的考虑。重点讨论了利用cjson组件的CVE-2019-11834和CVE-2019-11835实现数据泄露的方法,通过控制内存布局,跳过特定字节来读取目标数据。
摘要由CSDN通过智能技术生成

sctf2021 data leak 出题思路和题解

sctf2021 pwn出题思路

题目描述

Never trust c pointer magic and escape characters,

题目分值:281

解题人数:52

出题思路

最开始其实是cjson这个组件的漏洞 ,主要是 CVE-2019-11834CVE-2019-11835

两个cve都可以 实现跳过两个字节的功能,于是设计了这么一个数据泄露的题目 ,

漏洞位置

处理/*的时候会跳过两个字符,

image-20220102222216640

处理"的时候如果有\会跳过两个字符,

image-20220102222233867

内存布局

image-20220102222509844

两个buf长度为0x10, 写入数据为14, 在结尾有两个00, 数据在后面,每次从buf1开始处理,然后打印buf2中的11字节,数据一共22字节,在两次内打印出来,

image-20220102224502177

于是我们的思路是,通过跳过两字节从buf1到buf2, 然后再从buf2跳到data,

但是要注意, "的方案将会将数据保留,\*的方案将会将数据舍去, 于是可以将data写入到buf2的位置,控制前面的占位, 即可在两次打印中打印出来完整的data,

远程

原设计是直接泄漏flag出来,后面想到泄漏flag且flag固定,可能存在多次泄漏出来的情况,

于是增加了一层loader,

//
// Created by wlz on 9/14/21.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <sys/wait.h>
#include <string.h>

int main() {
   
    setvbuf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值