2020 i春秋高校战疫分享赛 pwn 部分题解 发表于 2022-02-14 | 分类于 ctf Shortest_path这题的非预期有点严重了 123456789101112131415void *sub_400946(){ FILE *stream; // [rsp+8h] [rbp-8h] setbuf(stdin, 0LL); setbuf(stdout, 0LL); stream = fopen("./flag", "r"); if ( !stream ) exit(0); fgets(s, 45, stream); fclose(stream); memset(free_flag, 0, 0x320uLL); memset(qword_606920, 0, 0x640uLL); return memset(ptr, 0, 0x640uLL);} 阅读全文 »
2020bytectf 发表于 2022-02-14 | 分类于 pwn gun 保护全开,且沙箱限制了只能使用open,read,write,exit4个函数 总共有3个功能,买子弹,上膛,发射,购买时可以给子弹命名,发射时会输出 子弹名字 123451.Shoot2.Load 3.Buy 4.Exit Action> 阅读全文 »
2020nu1lctf 发表于 2022-02-14 | 分类于 pwn easywrite程序保护全开,给了libc,有个任意地址写,然后再malloc(0x30) read and free(ptr) 利用思路:写tcache_ptr,修改tcache[0x40] 为 free_hook-0x10,之后覆盖free_hook-0x10为”/bin/sh\x00”,free_hook为system;free(ptr) get shell 阅读全文 »
2020强网杯 发表于 2022-02-14 | 分类于 ctf 部分转自师弟 baby_diarydelete跟show没问题,在add功能中溢出一个字节 该flag的范围为[0~0xf],所以可以当一个off-by-null来做 难点在于堆块的构造和pre_size的伪造 1、堆块的构造,利用large bin和unsorted中残留的堆地址操作 2、pre_size,先off-by-null(需要堆内容全为’\x00’),再free后重新申请利用flag写入pre_size 具体步骤解释看exp注释 阅读全文 »
IO_FILE泄露libc 发表于 2019-09-21 | 分类于 ctf 最近经常遇到没有show函数的堆了,吃了不少没有地址的亏,在这里记录一下泄露的方法 其实主要思路就是修改stdout的flag位为0xfbad1800,并且将_IO_write_base的最后一个字节改小,从而实现多输出一些内容,这些内容里面就包含了libc地址。 为什么flag要改成0xfbad1800,看源码: 阅读全文 »
pwnable.tw系列 发表于 2019-07-03 calc不愧是pwnable,质量果然高,学到了不少姿势,看题目很明显程序是一个计算器,但漏洞点在哪,着实让我这个小菜鸡绞尽脑汁,起初试图独自解决,最后还是迫于现实膜一了波大佬的write up 。 程序分析保护 开启了canary 跟NX 阅读全文 »