Posts HackCTF handray
Post
Cancel

HackCTF handray

handray

Source

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
push   rbp
mov    rbp,rsp
sub    rsp,0x10
mov    DWORD PTR [rbp-0x4],0x0
cmp    DWORD PTR [rbp-0x4],0x1

jne    0x40058d <main+103>
mov    DWORD PTR [rbp-0x8],0x0
jmp    0x400571 <main+75>

mov    eax,DWORD PTR [rbp-0x8]
cdqe
movzx  eax,BYTE PTR [rax+0x6010e0]
mov    edx,eax
mov    eax,DWORD PTR [rbp-0x8]
cdqe
mov    eax,DWORD PTR [rax*4+0x601060]
add    eax,edx
mov    edx,eax
mov    eax,DWORD PTR [rbp-0x8]
cdqe
mov    BYTE PTR [rax+0x6010e0],dl
add    DWORD PTR [rbp-0x8],0x1
cmp    DWORD PTR [rbp-0x8],0x1e
jle    0x400544 <main+30>

mov    esi,0x6010e0
mov    edi,0x400638
mov    eax,0x0
call   0x400400 <printf@plt>
jmp    0x40059c <main+118>

mov    edi,0x400648
mov    eax,0x0
call   0x400400 <printf@plt>
mov    eax,0x0
leave
ret

Solve

안티 Hex-ray를 건 것 같은데 어디다 걸었는지는 모르겠다.

문제는 생각보다 간단했다 전부 Handray로 C로 만들려 했으나 초반 바이트패치로

1
2
mov    DWORD PTR [rbp-0x4],0x0
cmp    DWORD PTR [rbp-0x4],0x1

이 부분에서 비교값을 0으로 패치해버리니 그 다음은 그냥 플래그 출력이더라.

그래서 따로 핸드레이 없이 플래그를 얻었다.

1
2
➜  reversing git:(master) ✗ ./handray
flag is HackCTF{Flag}
This post is licensed under CC BY 4.0 by the author.