pwn
文章平均质量分 89
一梦不醒
越努力越幸运
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
条件竞争
原理条件竞争就是两个或者多个进程或者线程同时处理一个资源(全局变量,文件)产生非预想的执行效果,从而产生程序执行流的改变,从而达到攻击的目的。条件竞争需要如下的条件:并发,即至少存在两个并发执行流。这里的执行流包括线程,进程,任务等级别的执行流。共享对象,即多个并发流会访问同一对象。常见的共享对象有共享内存,文件系统,信号。一般来说,这些共享对象是用来使得多个程序执行流相互交流。此外,我们称访问共享对象的代码为临界区。在正常写代码时,这部分应该加锁。改变对象,即至少有一个控制流会改变竞争对象的状原创 2021-05-13 12:03:43 · 5796 阅读 · 0 评论 -
Tcache Attack
tcache overviewtcache机制在libc2.27之后新增,可以说它是类似于fastbin的机制,LIFO,但比fastbin的优先级更高,由名字可以看出它相当于一个缓存的作用。先看关于它的两个结构体 tcache_entry 和 tcache_perthread_struct(见glibc2.27源码):/* We overlay this structure on the user-data portion of a chunk when the chunk is stored原创 2021-04-21 20:32:49 · 856 阅读 · 0 评论 -
exim2018-6789漏洞原理及迁移pwn题
exim2018-6789漏洞原理漏洞的成因是b64decode函数在对不规范的base64编码过的数据进行解码时可能会溢出堆上的一个字节,比较经典的off-by-one漏洞。存在漏洞的b64decode函数部分代码如下:b64decode(const uschar *code, uschar **ptr){int x, y;uschar *result = store_get(3*(Ustrlen(code)/4) + 1);*ptr = result;/* Each cycle of原创 2021-04-07 12:00:48 · 525 阅读 · 0 评论 -
pwngdb+pwngef+peda三合一+pwngdb+pwndbg联合使用
pwn调试工具安装最近一直奇怪安装peda有些好用的工具突然用不了,比如fmtrag、heapinfo等命令,重新装了peda还是没有。经过一番查找,终于知道,pwngdb和pwndbg还不一样,有些是pwngdb的命令,有些事pwndbg的命令,所以找到一个他们几个联合使用的方法,记录一下。下载pwngdbcd ~/git clone https://github.com/scwuaptx/Pwngdb.git cp ~/Pwngdb/.gdbinit ~/它支持的命令如下:libc :原创 2021-04-01 22:44:24 · 6721 阅读 · 0 评论 -
IO_file结构、FSOP、house of orange总结
占个坑总结目录:IO_file相关结构FSOPlibc2.23利用方式 修改vtablelibc2.24 添加check 利用io_str_jumpsio_str_overflowerio_str_finishio_buf_base scanflibc2.27 利用方式例子:2018suctf note(libc2.24)clear_note(io_str_overflows、io_str_finish有一定几率失败)参考文章https://xz.aliyun.co原创 2021-03-30 15:59:18 · 4117 阅读 · 2 评论 -
suctf2018-noend writeup
题目保护全开,主函数很简单,发现malloc没有检查分配失败的情况,若分配失败会返回0,接可以伪造size-1实现任意地址末位写0,为利用提供了条件。可以看到题目size>0x7f不会被free,小于0x7f就会被free掉。 while ( 1 ) { do { memset(s, 0, 0x20uLL); read(0, s, 0x1FuLL); size = strtoll(s, 0LL, 10); buf = mall原创 2021-03-24 17:11:04 · 360 阅读 · 0 评论 -
堆结构记录
fast binLIFO 最近释放的chunk会被更早分配,当用户需要的 chunk 的大小小于 fastbin 的最大大小时, ptmalloc 会首先判断 fastbin 中相应的 bin 中是否有对应大小的空闲块,有的话分配,否则ptmalloc 进行下一步操作。fast bin chunk大小最大64字节,但是其可以支持的 chunk 的数据空间(出去pre_size、chunk_size)最大为 80 字节。除此之外, fastbin 最多可以支持的 bin 的个数为 10 个,从数据空间为原创 2021-03-24 14:33:15 · 439 阅读 · 0 评论 -
一道简单的访问越界、栈溢出pwn解题记录
检查题目checksec保护都没开,降低了难度。64位程序,ida查看代码: ManageBook *v3; // rbx char buf[24]; // [rsp+0h] [rbp-30h] BYREF ManageBook *v6; // [rsp+18h] [rbp-18h] setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 1, 0LL); puts("your name:"); read(0, buf, 0x100u原创 2021-03-16 17:52:16 · 858 阅读 · 0 评论 -
2020强网杯Siri记录
题目检查checksec检查,保护全开。ida看下函数功能,发现sub_1212函数有格式化字符串漏洞:__int64 __fastcall sub_1212(const char *a1){ char *v2; // [rsp+18h] [rbp-128h] char s[280]; // [rsp+20h] [rbp-120h] BYREF unsigned __int64 v4; // [rsp+138h] [rbp-8h] v4 = __readfsqword(0x28u);原创 2021-03-15 19:14:42 · 1005 阅读 · 4 评论 -
栈迁移过程记录,栈指针rsp、rbp、rip、leave变化过程
栈迁移通过ROP leave_ret 改变ebp的值伪造栈,到达栈迁移的目的。下面就一个题目的一个payload进行调试,逐指令理解栈迁移的过程。这里只是通过ROP来实现,还有一种是通过ROP,向bss段伪造栈,这个以后再说。stack=rbp-0x70 #指向当前栈顶# ROPgadget --binary easy_ad --only "pop|ret" | grep rdipop_rdi_ret=0x400953 fun_addr=0x400756leave_ret=0x4007B5pu原创 2021-03-11 11:16:01 · 7448 阅读 · 0 评论 -
Off-By-One Asis CTF 2016 b00ks
Off-By-One学习、练习0x1、Off-By-One原理0x2、Asis CTF 2016 b00ks1、利用流程:2、泄露过程a、输入用户名,泄露book1地址b、构造假的fake_book结构体,使其指向book2的name和description字段。c、修改book1的描述字段,填入fake_book,输出book,得到book2的name和description地址。d、根据book2的name字段(为什么要是这个字段呢?)由固定偏移计算libcbasee、根据libcbase得到syste原创 2021-03-09 22:45:00 · 748 阅读 · 0 评论
分享