목록Write Up (43)
0x0102

정답은 무엇인가 13번 문제는 다른 힌트 없이 정답을 찾으라고만 나와서 먼저 PEiD를 통해 패킹 여부를 알아보았다. .text 형태이므로 별다른 언패킹은 필요없어 보인다. 그러나 C# 형태이기 때문에 dotpeek에서 살펴보았다. root namespace -> ~simpletest -> inhenitors -> main 경로로 Main을 찾을 수 있었다. 다음은 코드의 전문이다. 패스워드를 입력받아서 정답 문자열과 비교하여 맞으면 정답, 다르면 오답 처리를 하는 것 같다. 이 때 내가 입력한 문자열과 str 값을 비교하는데, 코드를 수정하여 암호화된 값이 아닌 정답을 출력하도록 해보자. BnCxGiN4aJDE+qUe2yIm8Q==^F79ejk56$£DHj47&*)$hMD51024&!£$%^&*()Cv..

Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 문제 파일을 다운로드 받고 PEiD에 던져보았다. EP Section이 .text로 나타나므로 언패킹 없이 바로 디버거에서 열어보도록 하자. 이뮤니티 디버거에서 실행 파일을 열면 다음과 같은 화면을 볼 수 있다. 실행을 하다보면 하단과 같이 키값을 입력하는 창이 뜨고, 아무 키값을 치면 프로그램이 종료된다. 다시 돌아가서, 코드를 살펴보았다. 메시지박스에 Congratulation,..

OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 먼저 문제파일을 다운로드 받아주고 PEiD에 넣어 패킹 상황을 살펴본다. 확인 결과 패킹되어 있으므로 upx -d 옵션으로 언패킹 해준다. 언패킹 후 이뮤니티 디버거에서 해당 파일을 열어보았다. 시작주소가 OEP이므로 OEP는 00401000으로 보인다. 이후 Stolenbyte를 찾기 위해 우클릭 -> search for -> find all commands에 popad를 검색해보았으나 해당 정보를 얻을 수 없었다. 패킹 전 파일을 다시 디버거에서 실행시켜보도록 하자. 하단..

OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 먼저 PEiD에 해당 파일을 열어서 패킹 상황을 살펴본다. ASPack 형태로 패킹되어 있는 것을 확인할 수 있다. 구글링을 통해 ASPack 형태는 PUSHAD -> 복호화 코드 실행 -> POPAD -> Return 0C -> OEP 값 PUSH -> Return으로 OEP 주소로 이동하는 특징이 있다는 것을 알아냈다. 따라서 파일을 따로 언패킹하지 않고 바로 디버거에서 살펴보았다. 먼저 우클릭 -> search for -> find all commands로 popad를 검색해보았다. 그러나 검색 결과가 너무 많아서, RETN0c로 검색해보았다. 이후 다음 주소로..

StolenByte를 구하시오 Ex) 75156A0068352040 StolenByte : 패커가 위치를 이동시킨 코드로써 보호된 프로그램의 코드 윗부분 이렇게 옮겨진 코드들은 할당된 메모리 공간에서 실행되며, 이와 같은 이유로 패킹된 프로세스가 덤프될 때 Stolen Byte를 복구하지 못하면 프로그램은 정상적으로 동작이 불가능하다. stolenbyte를 찾기 위해서는 popad 와 oep 사이에 있는 연속된 push를 찾으면 된다. 이뮤니티 디버거를 열고 문제 실행파일을 연 후 find all commands로 popad를 검색해준다. 그럼 popad와 oep사이 세줄의 push를 확인할 수 있고 해당 stolen byte를 입력하면 정답이다. 6A0068002040006812204000
보호되어 있는 글입니다.

컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 문제파일을 다운로드 받고 압축해제한 후 디버거에 풀어보았다. 어느정도 실행하면 enter your serial 이라는 메시지 박스가 나타난다. 그대로 check 버튼을 눌러보면 Not correct라는 문구가 뜬다. 문제에서 C드라이브의 이름이 "CodeEngn"일 경우 시리얼이 어떻게 변하는지 알아보라고 했으니 나의 C드라이브 이름을 직접 수정하여 진행하거나 hex dump값을 직접 수정해야겠다고 생각했다. C드라이브 이름을 변경하고 싶지 않아 아스키 값을 수정했다. VolumeBufferName의 주소가 0040225C에있으므로 그 주소로 가서 값을 직접 수정했다. 이후 계속해서 진행하다..

OEP를 구하시오 Ex) 00400000 파일을 다운로드 받고 디버거에 풀어주면 다음과 같은 메시지 박스를 볼 수 있다. 언패킹을 위해 upx와 같은 경로의 폴더로 옮겨주고 cmd를 켠다 upx -d [파일명] 명령어를 통해 언패킹을 해준다. 이후 다시 08.exe파일을 찾고 디버거에 던져준후 OEP를 찾는다. 정답
보호되어 있는 글입니다.
보호되어 있는 글입니다.