buuctf pwn [rip] [warmup_csaw_2016 1] [ciscn_2019_n_1 1]

栈溢出

【以下这几题全是利用栈溢出来进行攻破】

相同步骤:
1.下载文件
2.启动靶机
3.打开Terminal(用nc打开端口,用ls打开目录及文件)
【nc的参数用法
-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出–用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉–用于扫描时(改内容转载)】
4.用ida打开文件
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

第一张图可以看到gets,又因为64位所以字节加8造成栈溢出就可以了
第二张图可以看出输入v1判断v2。因为是判断v2所以将字符串覆盖v2便可以了在带到11.281125的地址中,之后找到11.28125的十六进制作为地址便可。
第三张图很明显的gets,一种不稳定的东西,char v5看出v5是40字节,又是因为64位,字节加8便可
在这里插入图片描述
其它两题就换一下字节和地址便可(使用pycharm只要自己下个pwn包便可,decode(“iso-8859-1)是是指转化为二进制)
【三题总结:
栈溢出本身原理很简单,就是向栈中带入超出规定的长度,使之溢出的覆盖栈之前的数据。在程序运行时我们的地址数据将会覆盖到函数返回地址上去,以至于被调函数返回主函数时,就会跳到我们安排的地址上去,这样我们输入的数据也成了正确答案了。(就是狸猫换太子)。pwn的漏洞类型一般分为三种:逻辑错误,内存破坏(栈溢出,整数溢出,格式化字符串,堆溢出)硬件实现漏洞】

收集一下易换函数:gets(),strcpy,strcat,sprintf

第一次写pwn,对pwn的漏洞类型总结一下:
逻辑错误:利用设计缺陷,获得敏感信息(特点是不用破坏,仅仅用逻辑处理不严谨来获得,且操作上不影响程序的运行)【自我认为就是跟着指针走它自己会暴露出来】
内存破坏:
1.栈溢出
2.整数溢出:【1】整数溢出到缓冲区溢出:主要是因为有符号整数(整数最高位是用0来表示正数,1来表示负数)无下限和无符号整数 共同在memcpy函数时因为有符号整数为负数 导致系统随机成一个很大的整数,从而使有符号整数中很大的内存放入到无符号整数中去,从而造成溢出操作。【2】数组下标越界:主要是拿下标中有符号去跟无符号整数进行比较,当有符号整数为负数时,又跟上面那一样,造成一个越界操作。
3.格式化字符串:利用占位符%x和%n来实现任意内存的读写。就是因参数不足导致格式化字符串中的参数被栈上存储格式化字符串的地址所代替,从而导致地址泄露。
4.堆溢出:感觉应该跟栈溢出差不多
硬件的漏洞:
主要出自于CPU的超前执行机制,利用乱序执行和分支预测。应该是因为乱序和预测所以没”人“管它应该走哪条路,导致可以乱指一条路也不会被发现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值