buuctf刷题——[OGeek2019]babyrop 1

好久好久没做ctf题了,今天得空刷刷buuctf,emm,发现好多都忘了。😭😭😭

查看权限

在这里插入图片描述
不能利用shellcode,但可以构造栈溢出。

查看源程序

在这里插入图片描述
为了方便区分,重命名了下函数。

  1. open函数的返回值:如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1;
  2. 文件描述符:0,1,2是标准IO输入/输出/错误输出给占用了,当文件open成功了,会返回数值3;
  3. read(fd,&buf,4u)是把fd所指向的随机数写入到buf文件中,长度是4个字节。 此时,buf是随机数作为参数传入f2;
    在这里插入图片描述

再看f2函数,里面的变量比较多,我们画栈图分析一下:
在这里插入图片描述

f2分析如下:

  1. 在s中写入方才生成的随机数。
  2. 终端输入0x20字节长的字符串到buf,buf数组长度为7,可以发生溢出,但溢出不到ret位置。
  3. strcmp的特性是遇到’\0’就停止比较字符串,这里可以考虑0截断绕过。
  4. 最后函数把v5作为返回值。但是这个函数并没有对v5做出改动,结合栈图,可以猜测v5是被溢出改变了。

最后查看f3函数:
在这里插入图片描述

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值