Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Tags
more
Archives
Today
Total
관리 메뉴

TH3 6R3@T H@CK

[Disk] 우리는 이 바이너리가... 본문

CTF

[Disk] 우리는 이 바이너리가...

vvh0am1 2022. 11. 20. 18:30

[문제]

 


[풀이]

binned 파일을 실행해보니 다음과 같은 문구가 나왔다.

 

그래서 파일 유형을 한번 확인해보고자 file 명령어를 입력했다. ▶ file ./binned

파일 유형이 리눅스 실행파일(ELF)임을 확인했다.

 

구글링을 통해 알아낸, 파일의 동작 과정을 추적하는 strace 명령어를 입력했다.

(strace 명령어를 통해 파일의 동작 순서에 따른 시스템 콜을 확인할 수 있다.)

 

▶ strace ./binned

 

 

💡 strace란

애플리케이션들이 사용하는 system call과 signal 등을 추적해서

성능 저하를 일으키는 부분이 있는지, 에러가 나는 부분이 있는지 확인하는 디버깅 툴이다.

 

 

다양한 시스템 콜 사이에서 binned 파일을 실행했을 때 (./binned) 봤던 문자열

(Begin working out flag)과 다른 문자열 (Flag worked out)을 발견했다.

따라서 두 문자열 사이에 있는 시스템 콜이 중요함을 추론할 수 있다.

 

시스템 콜에는 자신이 가지는 고유 코드번호가 있다.

따라서 이 문제는 코드번호 리스트에 담긴 번호를 아스키코드 문자로 변환하여 플래그를 구할 수 있음을 짐작할 수 있다. (스테가노그래피)

아래 사이트를 통해 각각의 시스템 콜 번호를 모두 구해보았다.

 

▶ 시스템 콜 번호: https://elixir.bootlin.com/linux/v3.14/source/arch/x86/syscalls/syscall_64.tbl

 

fork(): 57

getpeername(): 52

getsockopt(): 55

setfsgid(): 123

shmdt(): 67

getgid(): 104

getsockname(): 51

sysinfo(): 99

geteuid(): 107

umask(): 95

shutdown(): 48

setresuid(): 117

rmdir(): 84

ftruncate(): 77

getpgid: 121

bind(): 49

getdents(): 78

syslog(): 103

times(): 100

msgsnd(): 69

capget(): 125

 

순서대로 시스템 콜 번호를 나열하여

이를 아스키코드 문자로 변환시키는 코드를 짜보면 다음과 같다.

 

이를 실행하면 flag를 얻을 수 있다.

 


[Flag]

9447{Ch3ck_0uT_My_C411iNg_C0dE}

 


# reference

https://yum-history.tistory.com/252

'CTF' 카테고리의 다른 글

[11월 3주차] [Web] Coogay  (0) 2022.11.20
[Write-up] pico CTF 2022  (0) 2022.11.20
[Multimedia] 타이틀 참조  (1) 2022.11.20
[Network] 조용할수록 더 귀를...  (0) 2022.11.19
[Multimedia] Find Key(docx)  (0) 2022.11.19