【CTF】ciscn_2019_n_1和pwn1_sctf_2016--栈溢出

ciscn_2019_n_1和pwn1_sctf_2016–栈溢出

ciscn_2019_n_1 解题思路

下载样本到本地 使用file和checksec查看文件内容,文件为64位ELF,只开启了NX保护,NX即No-eXecute(不可执行)

在这里插入图片描述

使用IDA进行反编译

在这里插入图片描述

在main函数中调用了func()函数,该函数中表示当v2==11.28125时,则显示flag。 此时,题目出现了两种解题思路:

  • 利用gets函数进行栈溢出,函数直接返回system(“cat /flag”);
  • 利用gets函数进行栈溢出,覆盖v2的值为11.28125

在这里插入图片描述

思路一:利用gets函数进行栈溢出,函数直接返回system(“cat /flag”);:

v1栈溢出为0x30+8

在这里插入图片描述

return system(“cat /flag”)的地址为00000000004006BE

在这里插入图片描述

编写POC

在这里插入图片描述

flag{72b01720-a239-4166-b914-5591cd8a88c6}

思路2:利用gets函数进行栈溢出,覆盖v2的值为11.28125:

v1距离v2为0x30-0x4

在这里插入图片描述

11.28125的十六进制表达式为0x41348000

在这里插入图片描述

编写POC

在这里插入图片描述

flag{72b01720-a239-4166-b914-5591cd8a88c6}

pwn1_sctf_2016 解题思路

下载样本到本地 使用file和checksec查看文件内容,文件为32位ELF,只开启了NX保护

在这里插入图片描述

使用个小技巧,使用strings命令查看文件中显示的flag字样

在这里插入图片描述

使用32位的IDA打开文件,F5编译一下,目标函数为get_flag

在这里插入图片描述

目标函数地址为0x08048F0D

在这里插入图片描述

查看main函数

在这里插入图片描述

进入vuln函数,其中fgets函数无法像gets函数一样,可以无限制输入进而导致栈溢出,但是后文中将输入的“I”转换为“you”,即输入20个“I”(20个字节)就会有20个“you”(60个字节–0x3C)被转换,进而导致栈溢出。

在这里插入图片描述

编写POC

在这里插入图片描述

flag{7223fc9b-b538-4c2b-bf4d-46ec5206797b}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello_Brian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值