'2013 hust hacking festival'에 해당되는 글 3건

  1. [2013 HUST]6번 문제
  2. [2013 HUST]5번 문제
  3. [2013 HUST]4번 문제 (7)

[2013 HUST]6번 문제

6번 문제는 드디어 제일 좋아하는 리버싱 문제이다.


먼저 문제링크로 접속하면 압축파일을 하나 받는다.



압출을 풀려고하면 암호가 걸려있다. 파일명을 괜히 저렇게 한것이 아니다.


암호는 숫자와 영문조합이다. "advanced_zip_password_recovery" 툴로 "brute force" 모드, 숫자, 영문 조합, 암호길이는 기본 값 5를 주면


1분만에 풀린다.


압축을 풀면 exe 파일 하나와 2개의 사진파일이 나온다. 


스테가노?, 리버싱? 여태까지 리버싱이 안나왔기 때문에 리버싱에 무게를 두고 exe부터 분석했다.


먼저 어떤 놈인지 실행해보면 아래와 같은 팝업창이 뜨고 종료된다.



머냐고? 이게 머냐고? ...다짜고짜 머냐고 묻는다.....닥치고 분석


스트링을 흝어보려고 열어보면 UPX 문자열이 박혀있다. UPX로 패킹되어 있는 것이다.


바로 UPX 툴로 언팩을 해드리자.


인자값을 넣고 분석을 해보면 이 프로그램은 다음과 같다.


1.입력된 문자열을 암호화(함수에 넣은다)함수에 넣는다.

2.암호화 된 값을 하드 코딩된 특정값과 비교한다.

3.특정값과 일치하면 "콩그레츄레이션"


즉 입력된 문자열이 키다.



아래와 같이 올리에서 분석할 프로그램에 인자값을 주고 분석을 시작할 수 있다.




해당 프로그램은 인자값에 제일 첫글자가 잘린다.(키를 알아내는데는 아무런 상관이 엄다.)

4010000 함수가 암호화 하는 함수이면 입력했던 문자열을 인자로 받는다.

함수의 리턴 값을 바로 특정값과 비교 후 같으면 "콩그레츄레이션"으로 흘러간다~



암호화 하는 함수를 IDA Hexlay 기능으로 수도 코드를 보면 다음과 같다.




우리는 이것을 역으로 해주면 키가 나온다.


역으로 해주는 코드는 다음과 같다.(파이썬)


str=[0x3c,0x69,0x5a,0x67,0x1f,0x52,0x52,0x30,0x50]

key=""

a=0

for i in str:

key=key+chr((i^1)+16+a)

a+=1

print key



답은 : Mymy2hiHi


저작자 표시
신고

'Simple Story > CTF' 카테고리의 다른 글

[2014 Codegate]Reversing 250 write up  (0) 2014.03.02
[2013 HUST]6번 문제  (0) 2013.12.04
[2013 HUST]5번 문제  (0) 2013.12.04
[2013 HUST]4번 문제  (7) 2013.11.29
[2013 HUST]3번 문제  (0) 2013.11.28
[2013 HUST]2번 문제  (0) 2013.11.28

[2013 HUST]5번 문제

5번 문제는 주어진 링크로 SSH 접속을 하면 아래와 같은 문제를 볼 수 있다.



문제 바꾸지마, 루트 로그인 하지마, 파일 만들지마,.... 하지 말라는것도 많다..


진짜 문제인 문제파일은 권한이 스티키로 잡혀있다.


일반적인 포너블 문제처럼 루트권한으로 쉘을 따는 문제가 아니다.


일단 실행해보면 다음과 같다



힌트에 주목하자..1번 힌트는 풀고나서 생각해보면 버퍼사이즈 범위를 알려주려는듯(실제 40), 힌트2는 키를 뿌려주는 함수 주소다.!!!!!


버퍼크기 40 + 함수주소(0x8048b64)를 프로그램 실행할떄 인자값으로 넣어주면 base64 인코딩된 키값이 떨어진다~


너무나도 간단히 풀려서 허무한 문제...



저작자 표시
신고

'Simple Story > CTF' 카테고리의 다른 글

[2014 Codegate]Reversing 250 write up  (0) 2014.03.02
[2013 HUST]6번 문제  (0) 2013.12.04
[2013 HUST]5번 문제  (0) 2013.12.04
[2013 HUST]4번 문제  (7) 2013.11.29
[2013 HUST]3번 문제  (0) 2013.11.28
[2013 HUST]2번 문제  (0) 2013.11.28

[2013 HUST]4번 문제

4번 문제는 스테가노 + 패킷 분석 문제이다

문제에서 주어진 링크된 주소로 접속하면 사진파일을 하나 받게된다.

바로 스테가노라 생각하고 파일을 까보니 안에 zip 파일이 존재한다.

zip파일을 끄집어내어 압축을 풀면 pcap 파일을 하나준다. 또 패킷분석이다......(덕분에 와샥 기능을 많이 알게됨ㅋ)

다행히 크기가 작아 분석하는데 오래 걸리지 않았지만 문제가 요구하는 답이 무엇인지 알 수 없어 맨붕에 빠져있었다.

이럴떈 놀아야한다.... 놀고와서보니... 우리 늙은이가 역시 매의 눈으로 패킷에서 문제의 힌트를 얻어냈다.

문제의 패킷이다... 처음 봤을 땐 힌트로 보였지만 의미는 알 수 없었다. base64로 인코딩된 ftp 맥주소??? 2가 포함된 ftp mac주소??? 

온갖 추측 만 있다가. 늙은이가 풀어냈다.

그 당시 늙은이가 한 방법은 핵스 값을 보고 null이 아님을 알고 긁어와서 노트패드로 연것이었다. 그보다 쉬운 방법이 있다.

sava sa 버튼으로 파일을 저장 후 노트패드로 열면된다.

encode.base64(공격자의 mac주소_피해자의 ftp_비밀번호_2번째 디렉토리명) 가 답이다. 하지만......

여기서 우리는 뇌에 암이 생기고 맨붕이 왔다.

그 이유는 mac주소와 2번쨰 디렉토리명 때문이었다.......일단 위 힌트대로 답을 수집해보면

공격자의 mac주소는 다음 패킷들을 보면 알 수 있다.

ftp 필터를 걸고 패킷을 걸면 제일 처음 나온 패킷이다. ftp 서버에서 온 응답패킷으로 분석하면 다음과 같다.

FTP 서버 :  192.168.89.130  / MAC : 00:0c:29:6c:d1:b9(진짜FTP서버)

클라이언트 :  192.168.89.133 / MAC : 00:0c:29:f3:cd:ea(피해자)

2번째 패킷은 FTP에 로그인 하는 패킷이다. 분석하면 다음과 같다

FTP 서버 :  192.168.89.130  / MAC : 00:0c:29:52:bb:4b(요건 공격자)

클라이언트 :  192.168.89.133 / MAC : 00:0c:29:f3:cd:ea(피해자)

응? FTP 서버의 mac주소가 바뀌었다! 냄세가 난다....

이 패킷으로 공격자의 mac주소는 확실해진다. 클라이언트의 패킷을 받아 진짜 FTP 서버의 다시 보내준다.

분석해보면 다음과 같다.

FTP 서버 :  192.168.89.130  / MAC : 00:0c:29:6c:d1:b9(진짜 FTP 서버)

클라이언트 :  192.168.89.133 / MAC : 00:0c:29:52:bb:4b(요건 공격자)

00:0c:29:52:bb:4b(첫 번째 키 값) 패킷이 중간에서 Arpspoofing 공격을 통해 클라이언트의 패킷을 가로채고 있는 것이다.

두번째 키값 피해자의 FTP 비밀번호는 다음 패킷에서 알 수 있다

im@@UseR

마지막 키값은 의견이 갈렸다. 문제의 힌트는 단순히 2번째 디렉토리명 이라고 나왔다.

이 패킷을 보면 2번째 디렉토리명은 forensic 이다

이 패킷을 보면 2번째 디렉토리명은 network다. 우리는 우리는 둘다 해보기로 했다.

그런데 이 떄 4번문제의 힌트가 떳고 XX-XX-XX-XX-XX-XX.... 아 MAC주소를 저런식으로 표기하라는 거구나 ^-^~

우리는 순진하게 믿고 요구하는대로 다음 2개를 인증시도 했다.

00-0C-29-52-BB-4B_im@@UseR_ forensic base64로 인코딩

00-0C-29-52-BB-4B_im@@UseR_ network base64로 인코딩

당연히 인증 실패다...머징???? mac주소가 틀렷나??? 다시 분석해도 저넘이다... 이번엔 소문자로 바꾸고 인증 시도~

역시나 인증 실패.....머징??????????? 팀원 모두 인증 실패로 삽을 푸다...패킷을 다시 분석하고.... 시나리오를 그려가며 소설을 쓰기 시작했다..사실 이건 arpspoofing을 위장한 피싱공격????...

나중에는 패킷에서 모든 mac 주소를 뽑아 저런식으로 인증시도를 했지만 역시나 인증 실패...

우리는 이미 지쳐...포기수준이었다...걍 푼팀들이 신기했다....

다시 놀고와서 마음을 다잡고 분석이고 나발이고 모든 경우의 를 를 도입하여 인증시도를 하였다.

ex) 00-0C-29-52-BB-4B_im@@UseR_forensic

      00-0C-29-52-BB-4B_im@@UseR_network

      00-0c-29-52-bb-4b_im@@UseR_forensic

     00-0C-29-52-bb-4b_im@@UseR_network

00:0C:29:52:BB:4B_im@@UseR_forensic

.....등등 


.그런데 여기서 한가지 실수를 한 것이...너무 피곤한 나머지(진짜 인증 시도 팀원들이 합쳐 천번은 넘을듯 하다....)

base64 는 함정이라면 몇개의 경우의 수에 대해서 인코딩을 안하고 인증시도 한것이다

역시 .....인증 실패...실패..실패...이 문제로 거의 몇 시간을 날린 거 같다.. 너무 지쳐서 팀원들은 해산하고...

늙은이와 같이 원격으로 풀게 되었다.

집에 돌아와서 보니 힌트가 1개가 정정되고 추가로 힌트가 1개 더 나왔다.

1.xx:xx:xx:xx:xx:xx                

2.2번째 접근 디렉토리

사과문까지....

집에서 머리를 맑게하고 마음을 차분히 가라앉은 상태에서 힌트를 참고하며 인증 시도를 하니 깔끔히 성공하였다.


 00:0c:29:52:bb:4b_im@@UseR_network => base64로 인코딩











신고

'Simple Story > CTF' 카테고리의 다른 글

[2013 HUST]6번 문제  (0) 2013.12.04
[2013 HUST]5번 문제  (0) 2013.12.04
[2013 HUST]4번 문제  (7) 2013.11.29
[2013 HUST]3번 문제  (0) 2013.11.28
[2013 HUST]2번 문제  (0) 2013.11.28
[2013 HUST]1번 문제  (0) 2013.11.27