- 博客(5)
- 收藏
- 关注
原创 pwn--记录一道整数溢出
如果输入一个超过 int 最大值的正整数,atoi 转换时可能会发生整数溢出,导致 val 被解释为一个负数,但这种情况下,val < 0 检查可能无法正确拦截,具体取决于编译器和系统的行为。即使 val < 0,由于整数溢出,程序可能不会正确检测,直接比较 doubled == -100,从而输出 flag。程序要求 doubled == -100,即 2 * val == -100,理论上 val 应该是 -50。目标是使 2 * val == -100,即 val == -50。
2024-10-28 19:32:52 188
原创 PWN——canary问题
我们知道,通常栈溢出的利用方式是通过溢出存在于栈上的局部变量,从而让多出来的数据覆盖 ebp、eip 等,从而达到劫持控制流的目的。栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让 shellcode 能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈底插入 cookie 信息,当函数真正返回的时候会验证 cookie 信息是否合法 (栈帧销毁前测试该值是否被改变),如果不合法就停止程序运行 (栈溢出发生)。
2024-09-16 17:44:57 1024
原创 [PWN]——栈迁移及部分栈基础
栈由高到低,自顶向下增长,ebp指向栈底 【减(push)即指针向高移,加(pop)即指针向低移】。栈溢出能使我们覆盖栈上某些区域的值,甚至是当前函数的返回地址 ret;一旦 ret 覆盖为某个奇怪的值,例如 0xdeadbeaf,当函数结束恢复现场,即 eip 指向 ret 时,程序将会跳转到内存中的 0xdeadbeaf 处。此时,内核会立即告诉我们“SIGSEV”,即常见的段错误(Segment Fault)。注意:函数传参时从右往左。
2024-04-18 21:01:09 1485 1
原创 [PWN]——格式化字符串漏洞(包含几种解题方法)
如果要自己采用"%x$n"的方式手动构造payload容易出错,所以使用pwntools中的FmtStr格式化字符串类来解决格式化字符串漏洞比较方便做题。如果有什么错误的地方请师傅们告诉我一下。本文制作不易,盗版必究。
2024-01-19 18:51:02 3317 4
原创 [PWN]——栈溢出中32位与64位区别
【payload = b'a'*(0x2d+4)+ p32(mprotect_addr)+ p32(pop3_ret_addr) +p32(addr) + p32(0x100)+p32(0x7)】[利用pop3_ret将mprotect函数所需三个参数传递过去]【payload = b'a'*(0xe7+4)+p32(write_plt)+p32(p_main) + p32(1)+p32(write_got)+p32(4)】(调用write函数输出write_got地址)
2024-01-18 15:54:59 734
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人