C函数栈帧 x86_64 & x86函数基本结构 123456push rbpmov rbp, rsp...mov rsp, rbppop rbpret 进入新函数的栈帧前,要要将调用函数指令的下一条指令地址压入栈里(调用者的栈帧)。 64位函数栈帧再调用新函数前rsp是00调用新函数后先把下一条指令的地址:jmp main+175 压入栈此时rsp是08因此在新函数栈帧中第一个push前rsp 2025-03-04 pwn
pwntools使用 ELF1exe = ELF("./attachment") ELF对象的属性四大用途 sym 查找符号地址 符号表 函数、变量地址 plt 获取plt表地址 ==plt表和got表相比最重要的特性就是plt表可执行而got表不可执行 plt会跳转到相应函数处的地址== got 获取got表地址 查找字符串的地址 .search[b 2025-03-04 pwn
ret2libc libc基地址 + 函数偏移量 = 函数真实地址 问题是==怎么找libc基地址==呢?=> 泄漏一个函数的真实地址 有时间了解一下 libc的延迟绑定技术 got表-plt表 泄漏一个函数的真实地址=> 一般方法是采用==got表泄漏==以puts函数为例只要之前执行 2025-03-03 pwn
GHCTF-2025_wp Hello_world给了后门函数,基本的栈溢出有pie partial write + 栈对齐exp: 123456789101112131415161718192021222324252627282930from pwn import *import oscontext(arch='amd64', os='linux', log_level=' 2025-03-03 WP
使用pwntools时的语法注意点 p32不能操作负数需要和负数 与 上 1,转化为无符号数 12var_v2 = -557122643 & 0xFFFFFFFF # 32位 8个F (4字节)p32(var_v2) 2025-03-02 pwn
虚拟环境网络问题 wsl2联网问题老生常谈了,写个脚本放在./scripts/proxy.sh 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#!/bin/sh# hostip=$(cat /etc/resolv.conf | 2025-03-01 pwn
OS实验一 实验内容: 1. 在Linux/OpenEuler/OpenKylin系统中,增加一个系统调用/或内核模块,鼓励程序逻辑的多样化2. 撰写一个应用测试程序调用该系统调用/测试该内核模块3. 使用trace/ptrace/strace,或类似的系统跟踪工具来对该测试程序进行跟踪调试4. 附加:在指 2025-03-01
apoorvctf_wp kogarashicafe - the first栈溢出 + 基本ROP exp: 123456789101112131415161718192021222324252627from pwn import *import oscontext(arch='i386', os='linux', log_level='debug')if os. 2025-03-01 WP