当前位置: 首页 > news >正文

[NSSRound#4 SWPU]hide_and_seek-用gdb调试

看反汇编

    ; __unwind {
.text:0000000000001514 F3 0F 1E FA                   endbr64
.text:0000000000001518 55                            push    rbp
.text:0000000000001519 48 89 E5                      mov     rbp, rsp
.text:000000000000151C 53                            push    rbx
.text:000000000000151D 48 83 EC 68                   sub     rsp, 68h
.text:0000000000001521 89 7D 9C                      mov     [rbp+var_64], edi
.text:0000000000001524 48 89 75 90                   mov     [rbp+var_70], rsi
.text:0000000000001528 64 48 8B 04 25 28 00 00 00    mov     rax, fs:28h
.text:0000000000001531 48 89 45 E8                   mov     [rbp+var_18], rax
.text:0000000000001535 31 C0                         xor     eax, eax
.text:0000000000001537 48 8D 3D CD 0A 00 00          lea     rdi, name                       ; "_"
.text:000000000000153E E8 AD FB FF FF                call    _getenv
.text:000000000000153E
.text:0000000000001543 48 89 45 A8                   mov     [rbp+var_58], rax
.text:0000000000001547 48 8B 45 90                   mov     rax, [rbp+var_70]
.text:000000000000154B 48 8B 00                      mov     rax, [rax]
.text:000000000000154E 48 89 45 B0                   mov     [rbp+ptr], rax
.text:0000000000001552 48 8B 45 B0                   mov     rax, [rbp+ptr]
.text:0000000000001556 48 3B 45 A8                   cmp     rax, [rbp+var_58]
.text:000000000000155A 75 0A                         jnz     short loc_1566
.text:000000000000155A
.text:000000000000155C BF FF FF FF FF                mov     edi, 0FFFFFFFFh                 ; status
.text:0000000000001561 E8 2A FC FF FF                call    _exit
.text:0000000000001561
.text:0000000000001566                               ; ---------------------------------------------------------------------------
.text:0000000000001566
.text:0000000000001566                               loc_1566:                               ; CODE XREF: main+46↑j
.text:0000000000001566 BF 08 00 00 00                mov     edi, 8                          ; size
.text:000000000000156B E8 F0 FB FF FF                call    _malloc
.text:000000000000156B
.text:0000000000001570 48 89 45 B8                   mov     [rbp+dest], rax
.text:0000000000001574 48 8B 45 B0                   mov     rax, [rbp+ptr]
.text:0000000000001578 48 89 C7                      mov     rdi, rax
.text:000000000000157B E8 B4 FD FF FF                call    sub_1334
.text:000000000000157B
.text:0000000000001580 48 89 C1                      mov     rcx, rax
.text:0000000000001583 48 8B 45 B8                   mov     rax, [rbp+dest]
.text:0000000000001587 BA 08 00 00 00                mov     edx, 8                          ; n
.text:000000000000158C 48 89 CE                      mov     rsi, rcx                        ; src
.text:000000000000158F 48 89 C7                      mov     rdi, rax                        ; dest
.text:0000000000001592 E8 79 FB FF FF                call    _strncpy
.text:0000000000001592
.text:0000000000001597 48 B8 51 17 53 43 54 46 7B 77 mov     rax, 777B465443531751h
.text:00000000000015A1 48 BA 75 64 33 5F 30 6E 40 2C mov     rdx, 2C406E305F336475h
.text:00000000000015AB 48 89 45 D0                   mov     qword ptr [rbp+src], rax
.text:00000000000015AF 48 89 55 D8                   mov     qword ptr [rbp+var_28], rdx
.text:00000000000015B3 C7 45 E0 33 34 70 7D          mov     dword ptr [rbp+var_28+8], 7D703433h
.text:00000000000015BA C6 45 E4 00                   mov     [rbp+var_28+0Ch], 0
.text:00000000000015BE B8 14 00 00 00                mov     eax, 14h
.text:00000000000015C3 48 98                         cdqe
.text:00000000000015C5 48 89 C7                      mov     rdi, rax                        ; size
.text:00000000000015C8 E8 93 FB FF FF                call    _malloc
.text:00000000000015C8
.text:00000000000015CD 48 89 45 C0                   mov     [rbp+var_40], rax
.text:00000000000015D1 B8 14 00 00 00                mov     eax, 14h
.text:00000000000015D6 48 63 D0                      movsxd  rdx, eax                        ; n
.text:00000000000015D9 48 8D 4D D0                   lea     rcx, [rbp+src]
.text:00000000000015DD 48 8B 45 C0                   mov     rax, [rbp+var_40]
.text:00000000000015E1 48 89 CE                      mov     rsi, rcx                        ; src
.text:00000000000015E4 48 89 C7                      mov     rdi, rax                        ; dest
.text:00000000000015E7 E8 24 FB FF FF                call    _strncpy
.text:00000000000015E7
.text:00000000000015EC 48 8B 45 C0                   mov     rax, [rbp+var_40]
.text:00000000000015F0 48 89 C7                      mov     rdi, rax
.text:00000000000015F3 E8 C1 FD FF FF                call    sub_13B9
.text:00000000000015F3
.text:00000000000015F8 B8 14 00 00 00                mov     eax, 14h
.text:00000000000015FD 48 98                         cdqe
.text:00000000000015FF 48 89 C7                      mov     rdi, rax                        ; size
.text:0000000000001602 E8 59 FB FF FF                call    _malloc
.text:0000000000001602
.text:0000000000001607 48 89 45 C8                   mov     [rbp+var_38], rax
.text:000000000000160B B8 14 00 00 00                mov     eax, 14h
.text:0000000000001610 48 63 D8                      movsxd  rbx, eax
.text:0000000000001613 48 8B 55 B8                   mov     rdx, [rbp+dest]
.text:0000000000001617 48 8D 45 D0                   lea     rax, [rbp+src]
.text:000000000000161B 48 89 D6                      mov     rsi, rdx
.text:000000000000161E 48 89 C7                      mov     rdi, rax
.text:0000000000001621 E8 63 FC FF FF                call    sub_1289
.text:0000000000001621
.text:0000000000001626 48 89 C1                      mov     rcx, rax
.text:0000000000001629 48 8B 45 C8                   mov     rax, [rbp+var_38]
.text:000000000000162D 48 89 DA                      mov     rdx, rbx                        ; n
.text:0000000000001630 48 89 CE                      mov     rsi, rcx                        ; src
.text:0000000000001633 48 89 C7                      mov     rdi, rax                        ; dest
.text:0000000000001636 E8 D5 FA FF FF                call    _strncpy
.text:0000000000001636
.text:000000000000163B 48 8B 55 B8                   mov     rdx, [rbp+dest]
.text:000000000000163F 48 8B 45 C8                   mov     rax, [rbp+var_38]
.text:0000000000001643 48 89 D6                      mov     rsi, rdx
.text:0000000000001646 48 89 C7                      mov     rdi, rax
.text:0000000000001649 E8 3B FC FF FF                call    sub_1289
.text:0000000000001649
.text:000000000000164E 48 89 45 C8                   mov     [rbp+var_38], rax
.text:0000000000001652 48 8B 45 C8                   mov     rax, [rbp+var_38]
.text:0000000000001656 48 89 C7                      mov     rdi, rax
.text:0000000000001659 E8 4D FE FF FF                call    sub_14AB
.text:0000000000001659
.text:000000000000165E 48 8B 45 C0                   mov     rax, [rbp+var_40]
.text:0000000000001662 48 89 C7                      mov     rdi, rax                        ; ptr
.text:0000000000001665 E8 96 FA FF FF                call    _free
.text:0000000000001665
.text:000000000000166A 48 8B 45 C8                   mov     rax, [rbp+var_38]
.text:000000000000166E 48 89 C7                      mov     rdi, rax                        ; ptr
.text:0000000000001671 E8 8A FA FF FF                call    _free
.text:0000000000001671
.text:0000000000001676 48 8B 45 B0                   mov     rax, [rbp+ptr]
.text:000000000000167A 48 89 C7                      mov     rdi, rax                        ; ptr
.text:000000000000167D E8 7E FA FF FF                call    _free
.text:000000000000167D
.text:0000000000001682 B8 00 00 00 00                mov     eax, 0
.text:0000000000001687 48 8B 5D E8                   mov     rbx, [rbp+var_18]
.text:000000000000168B 64 48 33 1C 25 28 00 00 00    xor     rbx, fs:28h
.text:0000000000001694 74 05                         jz      short loc_169B
.text:0000000000001694
.text:0000000000001696 E8 B5 FA FF FF                call    ___stack_chk_fail

发现74 0A                         jz     short loc_1566时就exit 退出函数了,所以不让退出,直接跳过,用pwn中的set更改rip的值,再看反编译的程序发现有三个free应该结果输出。

gdb pwn1

用gdb调试

start

开始运行

i b

查看断点

b *$rebase(0x153e)

设置断点。为什么会有$rebase 是应为程序在这里面是随机生成的地址(设置到exit之前即可)

b *$rebase(0x1665)

设置到最后一个free之前

c

跳转到第一个断点处(ni是一样的道理只是ni是单步执行比较慢)

ni

直到ni到但exit处停止(当连续ni时,第二次及以后可以直接enter执行)

set $rip=$rebase(0x1566)

set  是修改命令 把寄存器的地址改成0x1566,跳过exit函数。

p $rip

查看修改后的地址

c

跳转到下一个断点

ni

ni到最后一个free(为什么要运行但最后一个是因为malloc动态内存分配,开起来后面的堆)

heap

查看堆

tel 0x555555559290

从第二个开始(一般第一个不是)

enter 继续查看发现带有flag的字样,复制地址

x/s 0x5555555594e0

详细的查看此地址的内容

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【2024】前端学习笔记6-容器标签div
  • 人工智能开发实战matplotlib库应用基础
  • 性能测试-jmeter的控制器(十六)
  • 腾讯云升级多个云存储解决方案 以智能化存储助力企业增长
  • 物联网——DMA+AD多通道
  • Flutter - Win32程序是如何执行main函数
  • 易语言源码用键盘按键代替小键盘写法教程
  • esp32-C2 对接火山引擎实现智能语音(一)
  • 只有C盘的windows系统通过磁盘分区分出D盘
  • 计算机毕业设计 基于协同过滤算法的个性化音乐推荐系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • electron react离线使用monaco-editor
  • 算法练习题27——疫情下的电影院(模拟)
  • OpenStack × OceanBase: 打造高可用可扩展的基础设施平台
  • [OpenCV] 数字图像处理 C++ 学习——15像素重映射(cv::remap) 附完整代码
  • Ruoyi Cloud K8s 部署
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Akka系列(七):Actor持久化之Akka persistence
  • axios 和 cookie 的那些事
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • DataBase in Android
  • Debian下无root权限使用Python访问Oracle
  • Flannel解读
  • go语言学习初探(一)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • k个最大的数及变种小结
  • Mybatis初体验
  • Solarized Scheme
  • vue-router 实现分析
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 你真的知道 == 和 equals 的区别吗?
  • 我从编程教室毕业
  • 一个项目push到多个远程Git仓库
  • 用element的upload组件实现多图片上传和压缩
  • ​如何使用QGIS制作三维建筑
  • ​字​节​一​面​
  • # Redis 入门到精通(九)-- 主从复制(1)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (循环依赖问题)学习spring的第九天
  • ***检测工具之RKHunter AIDE
  • ./和../以及/和~之间的区别
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 使用ajax控件后如何调用前端脚本
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .net网站发布-允许更新此预编译站点
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @TableLogic注解说明,以及对增删改查的影响
  • [20161101]rman备份与数据文件变化7.txt