[Tryhackme] 리버싱 Reversing ELF Writeup

2025. 3. 13. 11:20·Writeup

 

 

최근 며칠 동안 계속 웹해킹 랩만 풀었더니 리버싱이 약간 그리워져서

tryhackme의 리버싱 랩을 하나 풀어봤다 근데 문제가 8개여서 시간은 꽤 소요되었음

 

8개의 crackme1~crackme8 파일에서 각각 플래그를 찾아내면 된다!

 


 

Crackme 1

일단 파워쉘에서 strings을 출력했지만 힌트라고 할만한 정보는 찾지 못했다

나중에 안건데 ELF 파일이어서 그런지 파워쉘에서는 분석이 제대로 안되는 것 같다 

 

 

별 수확이 없어서 칼리리눅스에서 시도해봤음

chmod +x [file]

 

파일 실행권한을 추가하고 바로 ./crackme1 이렇게 실행하니까 바로 플래그를 찾았다

 

 

Crackme 2

 

1번 문제와 마찬가지로 실행 권한을 추가하고 실행했는데 이번엔 패스워드가 필요하다

strings 명령어로 플래그 획득 성공

 

Crackme 3

 

strings로 텍스트를 추출해 보니 Correct password 위에 암호화된 것으로 보이는 문자열이 있다

이걸 복사해서 어떤 암호화를 거쳤는지 툴을 사용해서 알아내자

 

Base64 인코딩으로 암호화된것으로 보임

 

플래그 획득 성공!

 

 

Crackme 4

 

이번에도 패스워드가 필요한데 gdb로 분석해 보니까 strcmp, 즉 문자열을 비교하는 함수가 사용된다

compare_pwd 이름을 보면 정해진 패스워드 값이랑 일치하면 플래그를 출력해 주는 듯

 

그럼 일단 아무 패스워드값을 넣어서 테스트해 보고 그 비교 과정을 보면 되겠다

 

ltrace:
사용자 공간 애플리케이션의 공유 라이브러리에 대한 호출을 보여주는 데 사용되는 리눅스의 디버깅 유틸리티

 

 

strcmp 함수를 보니 내가 입력한 test 값을 my_m0r3~ 라는 값과 비교한다

플래그 찾았다

 

 

 

Crackme 5

 

4번 문제와 동일한 방식

6번부터 난이도가 조금 올라간다

 

Crackme 6

 

6번 문제도 패스워드를 입력하는 유형임

 

 

IDA에 파일을 로드해서 구조를 보니까 

public compare_pwd
compare_pwd proc near

 

이렇게 비교하는 기능의 함수가 있다

어셈블리어에서 비교하는 부분을 찾아보면 뭔가 힌트를 찾을 수 있을 듯?

 

 

어셈블리어 부분을 살펴보다가 여러 섹션들에 cmp 연산자가 반복적으로 나타난다

cmp al, 31h ; '1'  
cmp al, 33h ; '3'

 

이런 식으로 16진수 Hex 값이 여러 개가 있는데 이게 플래그인 듯싶음

 

 

옆에 아스키값이 적혀있어서 굳이 복호화를 따로 할 필요는 없으나

혹시 몰라서 아스키 문자로 변환을 거치니까 1337_pwd라는 플래그를 찾음!

 

재밌당

 

 

Crackme 7

 

 

이번 문제는 실행하면 세 개의 옵션이 주어진다

1, 3은 별로 소득이 없다는 게 뻔하고 2 Add numbers 옵션을 선택하니까 

이름을 출력하고 두 숫자를 더해준다

 

 

이번에는 한눈에 봐도 다소 복잡하고 방대해 보인다

하지만 이미 실행을 해보기도 했고 decompile을 거치면

플래그를 찾는데 핵심적인 기능을 파악할 수 있기 때문에 겁먹을 필요는 없음

 

 

v7[0] 이게 사용자의 입력 숫자가 할당되는 변수에 해당한다

1이면 이름 2는 더하기 3은 Goodbye 출력

 

의외로 더하기 기능의 2번 옵션에서는 플래그 획득 힌트가 없는 대신에

v7[0] == 31337, 즉 123 숫자 대신에 31337이라는 값을 입력하면 giveFlag() 함수가 호출된다

 

 

성공!

너무 재밌당

 

 

Crackme 8

대망의 마지막 8번 문제

 

Access granted를 유도해서 플래그에 도달하는 게 목표니까 

저 부분 함수를 디컴파일해서 소스코드를 살펴보자

 

 

atoi: 입력 문자를 숫자로 변환하는 함수

 

이것 때문에 atoi의 반대인 itoa 거쳐서 플래그 찾는줄 알고 구글링 엄청 했는데

그냥 -889262067 그대로 써도 되는 거였음.. ^^

 

패스워드 비교 과정을 ltrace 명령어로 살펴봐도 이번엔 비교값을 안 가르쳐준다

위에서 얻은 숫자랑 비교해서 다시 시도

 

 

ltrace ./crackme8 -889262067

 

access granted 액세스를 부여받고 플래그 획득 성공!

 

 

 

 

작년 상반기~중순 정도만 해도 ctf에서 문제 하나도 못 풀어서 자괴감을 느끼고

리눅스는 ls, mv만 할 줄 알아서 이 길이 아닌가 싶었었다

리버싱은 이론만 재밌지 실습 능력은 하나도 없어서 정신적으로 참 힘들었었다

 

오늘 푼 리버싱 문제들은 어려운 난이도는 아니지만 스스로 힘으로 이렇게 

디컴파일도 하고 어셈블리어도 읽어가면서 다 마쳤다는 게 뿌듯하고 꾸준히 하면 쫌쫌따리 늘긴 하는구나 싶음
원래는 웹해킹이 제일 좋았는데 요즘엔 리버싱이 웹해킹보다 재밌다 

'Writeup' 카테고리의 다른 글

[Hackthebox] SpookyPass Writeup  (0) 2025.03.18
[Tryhackme] Juicy Details :: 로그파일 분석 Writeup  (0) 2025.03.17
Lab: Exploiting LLM APIs with excessive agency Writeup  (0) 2025.03.12
Lab: JWT authentication bypass via unverified signature Writeup  (1) 2025.03.11
[Hackthebox] Fawn Challenges Writeup  (0) 2025.03.09
'Writeup' 카테고리의 다른 글
  • [Hackthebox] SpookyPass Writeup
  • [Tryhackme] Juicy Details :: 로그파일 분석 Writeup
  • Lab: Exploiting LLM APIs with excessive agency Writeup
  • Lab: JWT authentication bypass via unverified signature Writeup
이둥둥
이둥둥
"><script>prompt(document.cookie)</script>
  • 이둥둥
    시골쥐 해커
    이둥둥
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 방통대 N
      • 리버싱
      • 웹해킹
      • 악성코드 분석
      • Defensive
      • 네트워크
      • 포렌식
      • Writeup
      • 클라우드
      • 사이버보안
      • Troubleshooting
      • 취준
  • 블로그 메뉴

    • 홈
    • 사이버보안
    • 방통대
    • 독후감
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    악성코드분석
    hackthebox
    사이버보안
    burpsuite
    웹해킹
    CTF
    독후감
    리버싱
    정보보안
    tryhackme
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이둥둥
[Tryhackme] 리버싱 Reversing ELF Writeup
상단으로

티스토리툴바