[xcz.kr prob19]
Revershit! 라는 제목의 xcz.kr 19번 문제입니다.
무려 300점짜리 문제네요 푼사람도 얼마 없습니다. 우선 문제를 다운로드 해보겠습니다.
add기능을 이용해 사용자를 추가하였더니 바탕화면에 log.txt 로그파일이 뜹니다. 열어보니
입력했던 정보가 나오네요 (입력:1 이름:A 나이:5 성별:M 타입:C) 입력했던것과 다른건 기분탓입니다..
어떤 특정한 값을 입력했을때 무언가 있을거 같습니다.
ollydbg로 한번 살펴봅시다
search for - All referenced strings 로 살펴본 모습입니다.
우선 로그 파일의 입력되있는 데이터를 읽어온 후에 메인 화면을 띄우는거 같습니다.
중간에 Key값을 만드는 부분이 보이네요 이 부분을 IDA로 decompile 해보러 가봤습니다.
Key 값 연산하는 부분입니다. xor 연산과 더하기 연산이 보이네요
여기서 (a1+4), (a1+28), (a1+29) 의 값을 모르니 올리디버거로 가서 살펴보겠습니다.
log.txt 로그를 읽어오는 함수에서 malloc 이 보입니다. malloc의 리턴값(002F15A0) 에 무엇이 들어있는지 확인해보겠습니다.
DUMP 부분에서 ctrl + G 를 이용해 002F15A0의 주소로 가주었습니다.
여기서 잘 살펴보면 IDA로 보았던 a1변수가 리턴값 주소에 있는 값이라면 a1+4는 002F15A4의 주소에 있는 A가 됩니다.
그렇다면 a1+28 과 a1+29 의 값은 002F15BC, 002F15BD의 주소에 있는 M과 C가 됩니다.
전에 넣었던 로그 값을 생각해보겠습니다. a1+4에 있는 값은 제가 넣었던 사용자의 이름 'A'입니다.
그렇다면 a1+28 에 있는 값은 사용자의 성별 'M'입니다.
그다음으로 a1+29 에 있는 값은 사용자의 타입 'C'입니다.
아하 그렇다면 다시 IDA decompiler 로 가보겠습니다.
if문을 살펴보면 a1+4의 값이 "E"가 되어야 한다고 되어있습니다. 그렇다면 사용자의 이름은 'E'가 되겠네요
하지만 사용자의 성별과 타입을 모르니 위에 보이는 디컴파일 내용대로 간단한 brute force를 통하여 key를 확인하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> int main() { int a[12] = { 95,-74,72,85,-80,68,-94,71,65,-82,-69,-75 }; char c[6][4] = { "MEA","MEB","MEC","WEA","WEB","WEC" }; char b = 0; for (int i = 0; i < 6; i++, puts("")) { for (int j = 0; j < 12; j += 3) { for (int k = 0; k < 3; k++) { b = 0; b = a[j + k] ^ c[i][k]; b += 80; printf("%c", b); } } } return 0; } | cs |
사용자의 이름은 'E' 성별은 'W' 타입은 'B' 인 부분에서 정상적인 Key값을 발견할수있었습니다.
B never good at studying doesn't
But, she has a lot of interest in the computer.
So, she likes computer.
Hint1. key is the ASCII code area.
B는 절대 공부를 잘하지 않는다.
그러나 그녀는 컴퓨터에 많은 흥미를 가지고 있다.
그래서 그녀는 컴퓨터를 좋아한다.
Hint1. key값은 아스키코드 영역입니다.
다시한번 문제의 내용을 살펴보았습니다.
B라는건 이름은 아니지만 타입이였으며 여자인 것을 보아 W타입이라는 것을 여기서 알수있었습니다.
Clear!
'Wargame > ▷ xcz.kr' 카테고리의 다른 글
[xcz.kr] prob26 ju57_ENc0dE (0) | 2018.02.08 |
---|---|
[xcz.kr] prob34 - Get the key, If You Can (0) | 2017.06.14 |
[xcz.kr] prob18 - Web Basic (0) | 2017.01.30 |
[xcz.kr] prob17 - Password Recover... (0) | 2017.01.29 |
[xcz.kr] prob16 - Mountains beyond mountains (0) | 2017.01.29 |