본문 바로가기

Wargame/Reversing-W

(24)
[RingZer0 CTF] Kernel Introduction Kernel Introduction 문제입니다.문제에 접속하면 바이너리 파일을 다운로드 받을 수 있습니다.바이너리 파일을 다운로드 받아보면 실행파일도 뭐도 아닌걸 알 수 있는데..사실 실행하면 풀리는 문제인거 같습니다..(필자는 그렇게 풀지 않았습니다..) 어쨌든 필자는 아이다로 열어서 살펴봤습니다. 문자열이 박혀있고, 어떤 루틴을 통과합니다.그리고 그 루틴을 모두 통과한 뒤에 연산 결과를 출력해주는 식의 프로그램이더군요. 보기 쉽게 헥스레이로 보면 이런식으로 코드가 표시됩니다.그럼 이 코드를 비슷하게 코딩해서 출력해주면 플래그가 뜨겠군! 이라고 생각할 수 있습니다.문제는 qmemcpy(buffer, &unk_236, sizeof(buffer)); 이 부분이겠네요.버퍼에 무언가 메모리를 복사해 오는데 저..
xcz.kr PROB9 xcz.kr 의 PROB9입니다.제목은 Easy Reversing파일을 다운로드 받아봅시다. REV.exe 파일이 다운받아집니다.이게 어떻게 동작하는건지 파악해야되니까일단 실행시켜봅시다. 실행시키면 ID,PW를 입력받고 체크한뒤에틀리면 who are you??? 를 내놓는 것 같습니다.OllyDBG에 던져서 분석해봅시다. 문자열 검색을 해보면 아까 ID,PW를 입력받는 부분이 보입니다.ID와 PW를 입력받고 그걸 토대로 비교연산을 진행할테니까저 부분으로 분기해서 살펴봅시다. 조금 살펴보다보면 이렇게 두개의 반복문이 등장하는데아마도 여기가 아이디, 비밀번호를 비교하는 부분처럼 보입니다.아이디와 비밀번호를 입력하고 다시 실행해봅시다. 아까 첫번째 반복문에서 입력한 아이디와 일치해야 하는 아이디를 비교하고,틀..
wargame.kr DLL_with_notepad wargame.kr 의 DLL with notepad 문제다.start를 누르고 페이지에 접속하면 이런 화면이 등장한다.download를 눌러서 파일을 다운로드 받자. 다운로드받은 zip파일을 풀면 notepad.exe, blueh4g13.dll 두개의 파일이 등장한다.결국 저 dll 파일 안에 답이 있을건데, 그럼 dll을 분석해야한다.이 문제는 dll을 분석할 수 있는가? 를 묻는 문제인 것 같다. 역시나. notepad.exe를 실행시키면 믿에 blueh4g13.dll이 붙어있는걸 확인할 수 있다. 그럼 OllyDBG에서 저 notepad를 Attach해서 notepad안의 dll들의 위치를 보고저 붙어있는 blue...dll의 위치를 찾아보자 떡하니 blue4g... 라는 이름을 가진 dll이 있..
xcz.kr PROB30 xcz.kr 의 PROB30.제목은 Easy DLL이고키를 찾으라고한다. 다운로드 받으면 prob30.dll 이라는 dll 파일이 다운로드 받아진다. 올리디버거에 올려서 스트링 검색을 키자마자the key is %s.. 가 보인다. 저 부분에서 키를 출력하는 것일테니저 부분을 중심으로 살펴보아야한다. 이렇게 브레이크포인트를 걸어두고, 이 dll 안에 키 값을 출력하는 함수부분의 제일 처음으로 넘어가서실행을 한단계씩 시켜봐야한다.그런데 이 파일은 dll, 즉 Dynamic Library Link 파일이고, 이 파일 내부에서는C드라이브 아래의 dllinj 파일 안의 target.exe 파일로 실행되게끔 되어있다.하지만 우리가 지금 dllinjection을 이용해서 이 파일을 실행할 수는 없는 노릇이므로강제로..
wargame.kr keypad_crackme wargame.kr 의 keypad Crackme 문제다. start를 눌러 들어가보면 저번 easy_crack 처럼 패스워드를 찾아보라고한다. 다운로드 받아서 실행시키면 이런 네모박스에키패드, AUTH, BYE를 누를 수 있게 되어있다. 이런식으로 숫자를 누르고 AUTH로 인증하는 식이다. 당연히 111을 넣었을 땐 틀리다고 한다.그래서 올리디에 던져서 조금의 분석을 진행해보았다. 여기가 핵심 부분인데, 입력하는 값을 구할 수 있다.이 부분에서 eax는 무조건 7로 세팅되고, 1이 더해서 8이 된다.그리고 그 eax에 FFFCECC9라는 값을 곱한 뒤에그 값을 입력한 값이 저장되어있던 edi에 더해주고edi와 0BADBABE를 비교해서 맞으면 성공문 틀리면 실패문을 출력한다.대략적인 분석과 조금의 계산..
wargame.kr easy_crackme wargame.kr의 Easy_Crackme 다. 간단한 리버싱 문제란다. Start를 눌러 들어가보면 패스워드를 찾아보세요! 라고 파일을 하나 준다. 파일을 다운받았다. 실행시키면 문자열을 입력받고 check해서 맞는지 틀리는지를 나타낸다.아무 숫자나 입력해서 check를 눌러보자. 틀렸단다. 이제 이걸 가지고 OllyDBG로 프로그램을 실행시켜보자. OllyDBG로 실행시켰다. 문자열 검색으로 nono.. 를 가보자.저 부분에 아마도 분기문이 있을것이라고 생각했다. 분기문이 있었고, 그 위에 문자열들을 비교했는데한 가지 아주 조금 까다로웠던 점은문자열을 나눠서 비교한다음 합친다는 것이다.한마디로 비교 함수가 여러개이다.그 비교 함수들을 다 찾고, 비교하는 문자열들을 찾아서 결합하면답을 찾을 수 있다...
CodeEngn advance 9 9번문제다. Password를 구해오라고한다. 실행시키고 일단 유저네임, 패스워드 다 아무런값이나 넣고 실행해보면틀렸다고 구문이 출력된다. 이제 이걸 가지고 올리디에서 분석을 진행하자 스트링 검색을 켜보면 이렇게 나온다.저 DonaldDuck은 뭐지?라고 생각할 수 있는데저게 바로 Username이다. 이 비교문에서도 DonaldDuck과 비교하는 걸 알 수 있고이것 말고도 실행시키자마자 왼쪽 아래부분의 헥스값 표시부분을 보면Username은 DonaldDuck이라고 나온다. 중요한건 패스워드를 찾는 것이다. Username에 대한 검사를 마친뒤에디버깅을 계속 진행하다보면 이렇게 내가 입력한 0x457 과원래의 패스워드 값처럼 보이는 0x0088228f 를 비교하는 걸 알 수 있다.원래의 패스워드 값은 ..
CodeEngn advance 8 8번 문제다. 키 값이 "5D88-53B4-52A87D27-1D0D-5B09"일 때 Name을 구하라고한다. 일단 실행시켜서 Name에 아무값이나 넣고Key 값에 "5D88-53B4-52A87D27-1D0D-5B09"를 넣고 Check it!을 해보자 더 많이 치란다.. 저번에 그 문제처럼그래서 올리디로 던져서 분석했다 일단 스트링 검색으로 살펴보면 Well Done! 이 보인다.저 곳으로 이동해보자 이동해서 위로 올라가면서 살펴보면 이렇게 저번처럼글자수 비교루틴이 있다. 저 글자수 비교 부분의 수를 좀 패치해주자 2글자라고 햇으니 2와 비교하게끔 패치했다.이제 최소 2글자를 입력해야 프로그램이 정상적으로 동작할 것이다. 다음은 키 값을 만들어내는 루틴인데저번이랑 그렇게 다르지않다.하나 다르다면 이번에는..