buuctf-[OGeek2019]babyrop

本文详细介绍了如何分析buuctf中的一道题目——[OGeek2019]babyrop。通过查看主函数和关键子函数sub_804871F、sub_80487D0,理解了利用sprintf函数的溢出以及通过控制返回值来实现栈溢出执行payload的思路。同时,提到了如何绕过strncmp函数的判断,使用特定的输入字符串。
摘要由CSDN通过智能技术生成

查看主函数

int __cdecl main()
{
   
  int buf; // [esp+4h] [ebp-14h]
  char v2; // [esp+Bh] [ebp-Dh]
  int fd; // [esp+Ch] [ebp-Ch]

  sub_80486BB();
  fd = open("/dev/urandom", 0);
  if ( fd > 0 )
    read(fd, &buf, 4u);
  v2 = sub_804871F(buf);
  sub_80487D0(v2);
  return 0;
}

从urandom读入4位赋值给buf,buf又作为了sub_804871F函数的参数。

进入sub_804871F函数查看

int __cdecl sub_804871F(int a1)
{
   
  size_t v1; // eax
  char s; // [esp+Ch] [ebp-4Ch]
  char buf[7<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值