最近学习了一圈i春秋的相关知识之后,感觉还是需要刷题。pwnable.kr还没有刷完,所以抽时间出来有功夫就刷刷题。

第一题 fd

首先ssh连接,查看程序。

【pwnable.kr】刷题笔记

可以发现程序比较简单,其中fd是可以指定的,当fd值为0时为输入。

【pwnable.kr】刷题笔记


第二题.collision

查看完代码发现是需要第二个参数输入的值经过计算==给的值。

【pwnable.kr】刷题笔记

可以看到将char类型强制转换为int类型。而int类型一个占四个字节。所以就变成了20个字符长度,分为五段求和。

用pyhon随便减一下:

【pwnable.kr】刷题笔记

然后输入既可:

【pwnable.kr】刷题笔记


第三题 bof

简单溢出,扔ida里查询

【pwnable.kr】刷题笔记

发现基地址有44字节 再加上4个字节的ebp 4个字节的返回地址也就是52个字节后面覆盖成cafebabe既可。

exp:

【pwnable.kr】刷题笔记

然后查看flag既可

【pwnable.kr】刷题笔记

但是这里我有一个疑问,为什么开了cannary但是却可以直接溢出成功呢?

再具体分析下:

【pwnable.kr】刷题笔记

第一个黄色的行表明

overflowme到ebp为2c 到cafebabe 又加8个字节。



相关文章: