목록분류 전체보기 (186)
Iriton's log
소스코드를 확인하면 입력받은 값을 별다른 필터링 없이 cmd 명령어 ping으로 넣는다. 개발자가 원한 건 저기에 IP 주소를 넣는 것이겠지만 이를 우회해야 한다. 명령어를 한 줄에 두 번 사용하려면 세미콜론(:)으로 구분해주면 된다. ls . 으로 현재 디렉토리에 있는 파일을 확인해 보자. flag.py가 있다. 이 파일의 데이터를 읽어들이는 cat 명령어를 사용하면 볼 수 있을 것이다. 8.8.8.8; cat flag.py
OEP를 구하시오 Ex) 00400000 필요 개념 정리 OEP: Original Entry Point - 패킹된 파일의 실제 프로그램 시작 부분 OEP 이전의 실행 부분은 패킹된 파일이 메모리에 로드되어 압축을 푸는 명령어가 들어 있다. UPX 패킹: PUSHAD로 레지스터 백업 → 아바축 해제 루틴 실행 → POPAD로 레지스터 값 복구 → OEP로 점프 UPX 패킹 파일 구조:[SECTION UPX1] - 압축 코드가 저장되어 있는 공간 [SECTION UPX0] - 메모리에 로드된 후 압축 코드가 해제될 공간 JMP: 압축 해제 루틴 맨 밑에 있는 원본 코드로 이동하기 위한 명령. 이 명령이 실행되어 이동하는 주소가 원본 코드의 시작점인 OEP이다. BP: Break Point - 값이 변경된 경..
Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD 풀이 언패킹을 한 후 시리얼을 찾으라고 하니 뭘로 패킹되어 있는지 확인해 봤다. UPX 패킹이다. cmd - upx.exe -d 06.exe 명령어로 언패킹해준 뒤 올리디버거로 열어봤다. 프로그램을 실행해 봤을 때 시리얼값이 틀리면 Wrong Serial! 이란 창을 띄웠다. 그걸 띄우는 코드로 이동하기 위해 [Search for - All referenced text strings]를 이용했다. 텍스트가 많긴 한데 맨 위쪽에 떴다. Good job과 You got it 이 궁금해서 더블클릭 해 봤다. 역시 여기서 시리얼 값을 찾으면 된다. 임의의 값인 1234를 시리얼 창에 기입하고 한..
이 프로그램의 등록키는 무엇인가 풀이 무슨 프로그램인지는 잘 모르겠다. 이것저것 눌러보니 등록키가 저런 숫자와 영어 조합인 거 같은데 코드 분석으로 찾으면 되는 거 같다. PEiD로 확인해 보니 UPX로 패킹되어 있는 것을 확인할 수 있었다. 이제 UPX 패킹은 익숙하다. 등록키를 찾기 위해 cmd를 통해 언패킹을 해준 뒤 올리디버거로 열어볼 것이다. 언패킹 하는 법: [upx가 다운받아져 있는 파일에 05.exe를 옮긴 뒤 cmd 실행 - upx.exe -d 05.exe] 그럼 이런 화면이 뜬다. 등록키를 정상 입력됐을 때 뜰 만한 문구를 찾기로 했다. [우클릭 - Search for - All referenced text strings] 그럼 이렇게 텍스트를 띄우는 코드들이 뜬다. 저 중에서 "Con..
이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가? 필요 개념 정리 TEST EAX, EAX: EAX의 값이 0인지를 판별하는 코드이다. 풀이 프로그램을 실행시키면 일정 시간이 지남에 따라 "정상"이라는 문구가 출력된다. 올리 디버거로 열어 보았다. 올리디버거를 통해 실행시키니 "디버깅 당함"이라고 출력을 한다. 올리디버거를 통해 F8을 누르면서 코드 흐름을 따라가 보았다. 그러다 00408454 부분에서 어떤 함수를 CALL하니 문자열이 무한반복으로 출력된다는 것을 알게 됐다. [Ctrl + G]를 눌러 해당 주소(0040100F)로 이동하였다. IsDebuggerPresent라는 함수가 의심스러워서 실행시켜 보니 EAX 값이 0에서 1로 변한다. 그..
패스워드로 인증하는 실행파일이 손상되어 실행이 안 되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오. 필요 개념 정리 HxD: 헥스 에디터 프로그램. 평균적으로 16진술 표현된 이진파일을 읽을 수 있게 보여주는 프로그램. 주로 파일 및 프로그램의 내부 데이터 값을 분석, 수정, 복구, 삭제 등을 할 때 사용. 풀이 프로그램을 실행시키면 위와 같은 사진이 뜬다. 올리디버거로도 열리지 않아서 검색해 보니 HxD라는 헥스 에디터 프로그램을 사용해야 된다는 것을 알았다. 헥스 에디터 다운로드 링크 Downloads | mh-nexus Downloads I am looking for new translators, if you want to help, here is a list of unmaintained tra..
HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 풀이 프로그램을 실행하자, HDD를 CD-Rom으로 인식하게 만들라고 뜬다. 올리디버거로 열어보았다. EAX와 ESI를 비교하여 일치하면, 즉 EAX - ESI 값이 0이면 점프문이 실행된다. GetDriveTypeA 함수가 실행되고 나면 EAX 값이 3으로 바뀌는데 CMP 코드로 인해 점프문이 실행되지 않았다. EAX 값은 3이 아니라는 뜻이다. CMP 코드 전에 ESI 증가 코드가 세 번, EAX 감소 코드가 두 번이 나왔다. EAX가 ESI 값인 3이 되기 위해서 리턴값이 5가 되어야 한다.
보호되어 있는 글입니다.