728x90
  • Easy_ELF

문제에서도 알려 주었지만, elf 실행파일은 리눅스 환경에서 실행힝 가능하다. 실행해본 결과 사용자의 입력을 받아서 wrong 혹은 correct를 출력하는 프로그램임을 확인 했다. 

 

IDA를 이용해서 파일을 열어보니까 main 함수에 call 부분에 write 가 있고 아래 sub_8048434 랑 sub_8048451 이 있고 cmp eax,1 에서 eax 값과 1이 같으면 correct를 출력하는 함수인 sub_80484F7을 호출하고, jnz short loc_804855B 이 실행되면 wrong이 출력되는 것을 확인 할 수 있다. 

 

그렇다면 sub_8048434 랑 sub_8048451 중 하나에 correct로 이어지는 함수가 있을 것이라 유추할 수 있다.

 

sub_8048434에 들어가보니 내용이 없었고, sub_8048451에 들어가니 다음과 같은 화면이 나왔다.

 

 

자세히 보게 되면, 

두번째 문자는 1이라고 주어졌고 나머지 문자들은 xor 연산을 통해서 구할 수 있다.

첫 번째 문자: xor 34h 

세 번째 문자: xor 32h

네 번째 문자: xor 0FFFFFF88h

다섯 번째 문자와 58h 비교하여 같으면 loc_80484A8로 이동한다.여기서 다섯 번째 문자는 X이다.

 

첫 번째 문자 : 0x34 XOR 0x78 = L

두 번째 문자 : 1

세 번째 문자 : 0x32 XOR 0x7C = N

네 번째 문자 : 0x88 XOR 0xDD = U

다섯 번째 문자 : X

L1NUX

http://reversing.kr/challenge.php

 

Reversing.Kr

Copyright © 2012-2022 Gogil All Right Reserved.

reversing.kr


  • Basic RCE L02

 

파일을 다운받아서 실행했는데, 해당 파일 형식을 지원하지 않아서 실행이 되지 않았고, 디버거 프로그램을 이용해서 열려고 했지만 열리지 않았다. 

 

어떻게 하면 열릴까 고민하고 있었던 새에 실제 실행 없이 소프트웨어 코드를 분석하는 정적분석을 이용해 문제를 풀어야겠다는 생각이 들었다.

 

우선 파일을 HxD 프로그램을 이용해 열어주었다.

 

 

파일을 실행하면 복호화된 텍스트가 오른쪽에 적혀 있는 것을 확인할 수 있다. 그래서 혹시나 flag 값이 옆에 써져 있지 않을까 계속 내렸더니

 

flag 출력 메시지 문자열이 있었고 JK3FJZh 문자열을 넣어주면 문제는 간단히 풀리게 된다.

 

 

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com

 

+ Recent posts