H-game | pwn | wp

week1

babysc

  • 思路 :
    • shellcode 对应(index + 1)异或处理后再执行
  • exp

aaaaaaaaaa

  • 思路:
    • 按照逻辑 输入 超过99 个a 即可执行 system("/bin/sh")

薯片拯救世界1

  • 思路 :

    • 这道题目是一个比较flag 和 输入是否相同的判断逻辑
    • 漏洞点在 对比的长度上 , 对比的长度由输入的长度决定,所以可以单个字符进行逐个爆破,爆破难度为 256 * 0x18
    • 爆破最后一个字符时有个bug,最后一个字符手动猜测下 是 '}'
  • exp


Steins;Gate

  • 思路:
      1. 在 id 中输入 /bin/sh , 方便最后跳转
      1. 在 0x400958 位置的函数中 布置栈 满足 0x400A00 的条件
      1. 在 0x400A00 函数中 leak canary
      1. 在 0x4008F6 函数中 栈溢出跳转到后门函数执行 system("/bin/sh")
  • exp


week2

CSTW2

  • 思路 :
    • 数组指针负数溢出,可修改 got表 , 跳转至后门函数
  • exp

SteinsGate2

  • 思路 :

  • 在 上周 Steins_Gate 的基础上多开了一个 pie 保护,

  • 第一轮 leak 随机数和 canary 之后 rop返回main函数,

  • 第二轮 leak 出 codebase , 然后利用后门函数和 id getshell

  • exp


handsomeariis

  • 思路 :
    • 普通栈溢出 , 未给 libc , 需要使用 LibcSearcher 查找对应版本的 libc
  • exp

babyfmtt

  • 漏洞点:
    • offbyone | 可以触发__stack_chk_fail
    • 格式化字符串 | 任意地址读写
  • 思路:
      1. 利用 格式化字符串 修改 __stack_chk_fail@got 为 后门函数
      1. 利用 offbyone 触发 __stack_chk_fail
  • exp


week 3

nameBook

  • 漏洞点在于 edit 的堆溢出
  • 过程:
    • 1.unlink 获取读写权限
    • 2.修改 __free_hook 绕过 Full Relro 执行 system("/bin/sh")
  • exp

薯片拯救世界3

  • 漏洞点
    • uaf
  • 利用过程
    • double free 修改 puts@got 为 后门函数地址 get shell
  • exp

babytcache

  • 漏洞点: uaf
  • 利用过程:
    • 两次 double free
      • 第一次是 tcache double free , 特点是没有检查
      • 第二次 因为 tcache 被破坏的next占用,直接进入 fastbin , 进行普通的 double free , 修改got 表 getshell
  • exp

Steins;Gate3

这道题目是在 SteinsGate2 的 基础上限制了 栈溢出的输入长度,在 rbp之后只能修改4个字节, 我自己想的思路是 4个字节修改到 leave_ret ,做一个栈迁移 到前方拓展可用的栈长度即可



week4

3x18

  • 这道题目 魔改自 pwnable 3x17
  • 参考
  • 功能流程:
    • 一次任意地址写
  • 利用过程:
      1. 修改 fini_array 再次进入 main ,触发一次任意地址写
      1. 因为 rbp 在 fini_array 附近 所以会触发 stack_canary , 劫持 _stack_chk_fail 中的一个 plt 函数,来进行无限次任意地址写
      1. 在 fini_array 中布置 getshell 的 rop链 , linux 64 的 系统调用参数 分别存储在 rax , rdi , rsi , rdx | 目标 execve("/bin/sh\x00" , null , null)
      1. 将 plt 修改到 fini_array + 8 ,通过栈迁移 执行 rop 链
  • exp

blind

  • 漏洞点 :
    • 堆溢出
  • 利用过程 :
    • unlink 造成一个 任意地址写
    • 修改 .dynamic 段中 .dynstr 的偏移 , 从而指定解析任意的libc函数
  • exp

blind2

  • 漏洞点:
  • delete 栈溢出
  • edit 堆溢出
  • 利用:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容