TH3 6R3@T H@CK
[Disk] 우리는 이 바이너리가... 본문
[문제]
[풀이]
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
'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 |