본문 바로가기

분류 전체보기

(18)
[CTF] PCAP 보호되어 있는 글입니다.
[Basic RCE] L05 Q. 이 프로그램의 등록키는 무엇인가? 등록 키를 입력하여 인증을 받는 프로그램이다. 정상적으로 실행한 모습. 아무 값이나 넣고 Register now를 클릭해본다. 시리얼 번호가 틀렸다고 출력되고 아이다를 통해 분석해보기로 한다. 그런데 분석이 되지 않고 딸랑 하나의 Function만 존재하며 세그먼트는 UPX1을 가리키고 있다. 검색을 해보니 UPX로 프로그램이 패킹되어 있는 것을 확인 할 수 있다. Detect It Easy에서도 UPX로 패킹되어있는것을 확인할 수 있다. UPX는 디버거 상태의 OEP 위치에서 다음 진행을 통해 우회하거나, 메모리 상의 시작 위치를 계산하고 덤프하여 분석할 수도 있지만 편의성을 위해 upx 언패커가 존재하므로 해당 프로그램을 사용하기로 한다. 언패킹 후 다시 DIE..
[Basic RCE] L04 Q.이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가? 이번 문제는 디버거를 탐지하는 프로그램이며 해당 함수의 이름을 알아내야 한다. 정상적으로 해당 프로그램을 실행하였을 때 디버거가 탐지되지 않아 정상으로 출력되는 모습이다. IDA를 통해 해당 프로그램을 열어보았다. 먼저 loc_401048의 push 3E8h를 10진수로 바꾸면 1000이 된다. 이것을 스택에 저장 후 Sleep을 콜하여 sleep(1000)이 되며 1초마다 해당 분기를 수행하게 된다. 그리고 IsDebuggerPresent 함수의 경우 Microsoft Docs에서 확인하였을 때 프로세스가 디버거의 컨텍스트에서 실행되고 있다면 반환값은 0이 아니게 되고 프로세스가 디버거의 컨텍스트..
[Basic RCE] L03 Q. 비주얼베이직에서 스트링 비교 함수는? 비주얼베이직에서 스트링 비교함수의 이름을 찾는 문제이다. 해당 문제 파일을 실행하여 아무 값이나 입력하였더니 위 그림과 같은 에러 메시지가 출력된다. IDA Pro에서 해당 파일을 디컴파일 한 뒤 스트링 값으로 해당 문자열을 찾아보았다. 해당 문자열이 위치한 로직으로 이동하면 다음과 같은 로직이 나오게 된다. 해당 ebp-58h 위치(사용자 입력값)에 저장된 사용자가 입력 한 값과 2g83g35hs2 값을 스택에 저장하고 __vbaStrCmp를 통해 두개의 값을 비교하여 정답여부를 결정한다. 따라서 프로그램은 2g83g35hs2가 정답이다. 코드엔진 사이트에서 요구하는 정답은 __vbaStrCmp가 될 것이다.
[Basic RCE] L02 Q.패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오. 파일이 손상되어 해당 파일을 실행할 수 없다. HxD를 통해 해당 파일을 열어 보면 다음과 같다. 위와 같이 시그니처 포함 hex로 된 바이너리 값들이 나타난다. 스크롤을 내리다보면 성공했을 때 구문과 실패했을 때 구문의 메시지 값이 같이 나오게 된다. 이때 정답은 Crackme#1. JK3FJZh가 된다. JK3FJZh을 인증해보면 성공했다는 문구가 나타난다.
[Basic RCE] L01 Q. HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가? 위 문제를 해결하기 위해 IDA Pro를 이용하여 문제를 분석해본다. 로직을 보면 먼저 Caption과 Text를 각각 스택에 저장 후 MessageBoxA를 call 하여 문구를 출력한다. 그리고 다음으로 RootPathName을 스택에 저장한 후 GetDriveTypeA를 호출하게 된다. c드라이브의 경로(C:\)를 전달 받고 C드라이브가 GetDriveTypeA로부터 CD-ROM인지 아닌지 판별하는 것 같다. Microsoft Doc를 살펴보면, 루트 디렉토리이름을 입력 받는 것을 알 수 있다. 또한 이 페이지의 아래를 보면 Return Value를 알 수 있다. 함수가 5를 반환하면 해당 ..
Play The Web - 2. 이제 개발 쫌 한다? 첫번째 글을 쓰고 나서 많은 생각이 들었다. 내가 하고 싶었던 말을 첫 글에 거의 쏟아부은 것 같아 더 이상 쓸 말이 없진 않을까? 하는 생각도 들었다. 이번 글은 첫번째 글이 개발에 입문시키기 위해 썼다면, 개발을 하면서 익힌 노하우를 보안에 써먹는법에 대해 내 생각을 적어보고자 한다. 웹 모의해킹을 하다보면 홈페이지의 디자인도 많이 보게 되지만 홈페이지에 속한 기능이 어떻게 동작하는지를 생각해보게 된다. input의 순기능에 의해 데이터를 입력받고 그것을 GET이나 POST 메소드를 통해 넘기고... 동적 페이지에서 이를 처리해 웹 서버와 연결된 DB에 저장한다. 웹 개발을 하게 되면 자연스레 알게 되고 사이트마다 공부를 하지 않아도 위와 같은 방식이 통상적으로 쓰인다는 것을 알 수 있다. 사실 웹에..
Play The Web - 1. 메모장 열어, 코드부터 들어간다. 먼저, 한 동안 블로그에 글을 작성하지 않다가 이 글을 작성하는 이유는 그렇게 큰 이유도 아니고 작은 이유도 아니다. 시스템 해킹 로드맵이라고도 불리는 홍승표님(Ph4nT0m)의 슬라이드는 안 본 사람은 있어도 한번만 본 사람은 없을 것이라 생각한다. 슬라이드를 보면서 느낀 것이 시스템 해킹 뿐 아니라 웹에 입문하고자 하는 사람도 이러한 길잡이 문서가 있으면 좋을텐데.. 하고 생각했었다. 그래서 나도 한번 써보자! 하고 글을 작성해보고자 한다. 평소에 카카오톡 채팅방에 있다보면 보안쪽으로 입문하려는 사람이 많다. 그들의 연령은 중학교 2학년부터 30대까지 다양하다. 입문하고자 하는 사람들의 대표적인 질문이 하나 있다. "보안을 하려고 하는데 뭐부터 해야 하나요?" 내가 보안 공부를 처음 시작할 때에도 뭐..