0x01前言:
这一系列文章为.’s 的全部题解 , 其中有三道题目相对而言稍难或者说比较经典 , 单独成篇 , 其他题目的题解放在一起发出来 。
Ssh连接
文章插图
看一下目录
我们需要执行flag , 或者查看flag的内容
看题目的提示就知道这题和文件描述符有关
文章插图
看看源码
文章插图
在代码中我们可以看到要通过()比较后会输出
查看的用法
文章插图
可知 , ()中 , 若参数s1和s2字符串相同则返回0 , s1大于s2则返回大于0的值 , s1小于s2则返回小于0的值 。
代码中要cat flag执行的话if语句应满足返回0 , 即buf的内容应为
那么buf的值哪来的呢
man read可知
文章插图
的值由read控制 , 从fd读入count个字节内容
fd在代码中的值为atoi(argv[1])-
atoi()用于把字符串转换为整数
由linux下文件描述符可知(源码在/usr//.h)
文章插图
即文件描述符0表示标准输入 , 也就是我们可以从命令行中控制的 。
Atoi接收的参数我们可以控制 , 只要令argv[1]为(argv[0]为程序名称 , argv[1]为输入参数) , 十进制为4660 , 经过运算最后赋值给fd的就是0 , 然后再传入read() , 由于fd为0 , 所以我们在命令行中输入什么 , 则在中写入的就是什么 , 只要输入就可以了
分析完毕 , 接下来测试一下
通过,关闭ssh连接
文章插图
看题目描述应和哈希碰撞相关
文章插图
看看源代码
文章插图
在main()中看到传入的argv[1]需要满足条件:
长度为20字节 , 传给后的返回值为硬编码的
那么我们需要来看一下的逻辑
可以看到传参为char型指针 , 在逻辑中被强制类型转换为int型指针
从大小的角度来看即1字节转换为4字节 , 一共20字节 , 20/4=5 , 刚好对应for循环里的5次 , for循环是做了个累加的操作 , 即累加和等于即可
emmm简单理解 , 就是说输入20字节 , 每4字节一组 , 共5组 , 5组相加后等于即可 。
这就很简单了
我设16个字节为0x1 , 那么另外的4字节应为差值 , 又因为小端序 , 所以写的时候倒过来写即可 , 如下所示
根据题目描述这是一道缓冲区溢出的题目
文章插图
下载bof及其代码
文章插图
看看源码
文章插图
看到main中调用了func , 传参为
而func()中可以看到需要传参为才可以
- 世界七大最古老的高级院校,巴黎大学有900多年的历史
- 老子的思想核心是道他为何认为道是万物的本源
- 领越老子的智慧超越时代的人生思辨和处事智慧
- 为什么老放屁?又臭又大声其实是身体在报警!小小一个屁,看出健康大问题
- 王纪庭母亲成为南京不老仙妈,实际情侣照是经过ps的
- 唐国强个人资料简介,唐国强现任老婆壮丽二婚
- 女生真的是要尽早重视经期保养,不然一过25岁真的会老得很快
- 马尔科姆博士回来了!元老级演员将加入《侏罗纪世界2》
- 世界上最老的模特,61岁白发魔女YazemeeahRossi公开不老秘诀
- 家里有老人得风湿的注意了,风湿疼的时候一定要远离这四种食物