一些有用的预加载库,用于 pwning 任务。
Preeny 可以帮助您通过更方便地与本地服务进行交互来击败新手。
它禁用了 fork(), rand() 和 alarm(),如果需要,还可以使用巧妙/黑客式的技巧将服务器应用程序转换为控制台应用程序,甚至可以修补二进制文件!
Preeny 具有以下模块:
| 名称 | 摘要 |
|---|---|
| dealarm | 禁用 alarm() |
| defork | 禁用 fork() |
| deptrace | 禁用 ptrace() |
| derand | 禁用 rand() 和 random() |
| desigact | 禁用 sigaction() |
| desock | 将套接字通信通道到控制台 |
| desock_dup | 将套接字通信通道到控制台 (更简单的方法) |
| ensock | desock 的反义词 - 就像是一个 LD_PRELOAD 版本的 socat ! |
| desrand | 使用 srand() 执行一些复杂的操作来控制随机性。 |
| detime | 使 time() 总是返回相同的值。 |
| desleep | 使 sleep() 和 usleep() 不做任何事情。 |
| mallocwatch | 当 ltrace 不方便时, mallocwatch 提供有关堆操作的信息。 |
| writeout | 一些二进制文件使用 fd 0 进行 write() 操作, 期望它是一个双向套接字。 这使得它可以正常工作 (通过重定向到 fd 1)。 |
| patch | 在加载时修补程序。 |
| startstop | 在启动时向自己发送 SIGSTOP, 以暂停进程。 |
| crazyrealloc | 确保正在重新分配的内容始终被移动到内存中的新位置, 从而释放旧内容。 |
| deuid | 更改进程的 UID 和有效 UID |
| eofkiller | 在多个读函数中在 EOF 上退出 |
| getcanary | 在程序启动时输出 canary (目前仅限于 x86 和 amd64) |
| setcanary | 在程序启动时用用户提供的 canary 覆盖 canary (目前仅限于 amd64) |
| setstdin | 设置用户定义的 STDIN 数据, 而不是真实的数据, 覆盖 read, fread, fgetc, getc 和 getchar 调用。 请阅读 这里 了解更多信息 |
| nowrite | 强制 open() 以只读模式打开文件。 降级到 readwrite 或 writeonly 模式, 并处理 append、mktemp 和其他与写相关的标志 |
| pdeathsig | 使一个进程及其创建的所有进程在其父进程死亡时退出。 请阅读 这里 了解更多信息 |
暂无开放 Issues,或尚未同步最近议题。