[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

详细的查看此地址的内容

相关推荐
Clockwiseee1 分钟前
php伪协议
windows·安全·web安全·网络安全
Lspecialnx_5 小时前
文件解析漏洞中间件(iis和Apache)
网络安全·中间件
学习溢出6 小时前
【网络安全】逆向工程 练习示例
网络·安全·网络安全·渗透测试·逆向工程
孤独的履行者9 小时前
入门靶机:DC-1的渗透测试
数据库·python·网络安全
Blankspace学10 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
CVE-柠檬i13 小时前
Yakit靶场-高级前端加解密与验签实战-全关卡通关教程
网络安全
轨迹H1 天前
kali设置中文输入法
linux·网络安全·渗透测试·kali
cr.sheeper1 天前
Vulnhub靶场Apache解析漏洞
网络安全·apache
Autumn.h1 天前
文件解析漏洞
web安全·网络安全·中间件