본문 바로가기

전체 글202

[리버싱 핵심 원리] 8장, abex' crackme #2 분석 08, abex' crackme #2 분석 첫 화면 Check 클릭 About 클릭 실행화면이다. 이름과 시리얼을 맞는 것을 입력해야 한다. Visual Basic? : 윈도우용 응용 프로그램을 개발할 수 있는 프로그래밍 언어 - 비주얼 언어는 화면 디자인을 위해 많은 줄의 코드를 작성하지 않고 미리 만들어진 도구를 이용하여 그림 그리듯이 디자인할 수 있는 언어 VB 전용 엔진 (1) VB 파일은 MSVBVM60.dll (Microsoft Visual Basic Virtual Machine 6.0)이라는 VB전용 엔진을 사용한다. (2) VB 엔진의 사용 예를 들어보면 메세지 박스를 출력하고 싶을 때 VB 소스코드에서 MshBox() 함수를 사용한다. (3) VB 컴파일러는 실제로 MSVBVM60.dll.. 2020. 11. 7.
[리버싱 핵심 원리] 7장, 스택 프레임 07, 스택 프레임 - ESP는 수시로 변하기 때문에 스택에 저장되어진 변수, 파라미터에 접근하고자 할 때 ESP 값을 기준으로 하면 프로그램을 만들기 힘들고 CPU가 정확한 위치를 참고할 때 어려움이 있다. - 어떤 기준 시점(함수 시작)의 ESP의 값을 EBP에 저장하고 이를 함수 내에서 유지해준다면, ESP 값이 아무리 변하더라도 EBP를 기분(base)으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. - EBP 레지스터 베이스 포인터 역할 //스택 프레임의 구조 PUSH EBP ;함수 시작(EBP를 사용하기 전에 기존의 값을 스택에 저장) MOV EBP, ESP ; 현재의 ESP(스택 포인터)를 EBP에 저장 ... ; 함수 본체 ; 여기서 ESP가 변경되더라도 EBP가 .. 2020. 11. 7.
[리버싱 핵심 원리] 11장, Lena's Reversing for Newbies 11장, Lena's Reversing for Newbies 확인을 누르면 아래와 같이 Regcode를 입력하는 부분이 나온다. 메세지 박스가 뜨면서 두 가지를 지시한다. 1) 모든 성가신 Nags를 없애라. 2) registration code를 찾아라. 전형적인 serial crackme이다. 화면의 파란 글씨를 읽어보면 registration을 위해 'SmartCheck'을 사용하라고 하고 있다. (SmartCheck는 Numega 사에서 만든 유틸리티이며 크래커들이 애용하는 툴 중 하나이다.) 올리디버거로 먼저 열어보았을 때 화면은 다음과 같다. [마우스 오른쪽 클릭] - [Search for] - [All referenced text strings] 검색을 통해 성공부분을 따라 들어가면 main.. 2020. 11. 7.
[리버싱 핵심 원리] 10장, 함수 호출 규약 10장, 함수 호출 규약 함수 호출 규약? Calling Convention은 우리 말로 '함수 호출 규약'이라고 한다. 이것은 '함수를 호출할 때 파라미터를 어떤 식으로 전달하는가?'에 대한 일동의 약속이다. 함수 호출 전에 파라미터를 스택을 통해서 전달한다. 스택이란 프로세스에서 정의된 메모리 공간이며 아래 방향(주소가 줄어드는 방향)으로 자란다. 또한 PE 헤더에 그 크기가 명시되어 있다. 즉 프로세스가 실행될 때 스택 메모리의 크기가 결정된다(malloc/new 같은 동적 메모리 할당과는 다르다). Q, 그렇다면 함수가 실행완료되었을 때 스택에 들어있던 파라미터는 어떻게 해야 될까요? A, 그대로 둔다. 스택에 저장된 값은 임시로 사용하는 값이기 때문에 더 이상 사용하지 않는다고 하더라고 값을 지.. 2020. 11. 7.
[리버싱 핵심 원리] 15장, UPX 실행 압축된 notepad 디버깅 15장, UPX 실행 압축된 notepad 디버깅 15.1 notepad.exe의 EP Code 원본의 notepad.exe의 EP 코드이다. 010073B2 주소에서 GetModuleHangleA() API를 호출해서 notepad.exe. 프로세스의 ImageBase를 구한다. 그리고 010073B4와 010073C0 주소에서 각각 MZ와 PE 시그니처를 비교한다. 15.2.notepad_upx.exe의 EP Code notepad_upx.exe를 OllyDbg로 열어보면 위와 같은 경고 메세지 박스가 나타난다. 디버거가 해당 파일이 압축되었다고 판단하였다. 예/아니오 중에 아무거나 선택해서 넘어가면 UPX EP코드가 나타난다. EP 주소는 01015330이며, 이곳은 두 번째 섹션의 끝부분이다. 실.. 2020. 11. 7.
[Webhaking.kr] old 27번 old 27번에 들어갔더니 위와 같은 화면이 나왔다. 18번 문제와 같이 간단하게 sql injection이라는 것을 알 수 있엇다. view-source에서 코드에 들어가 중요한 부분을 확인해보았다. 여기서 보면 id 값이 admin이면 풀리는 문제인 거 같다. 위의 코드에서 쿼리문 부분을 보면 id가 guest로 지정되어 있는 것을 볼 수 있다. 또한, 주석으로 admin's no=2라고 되어있다. 저 주석이 힌트를 알려주고 있다. 아무 숫자나 넣어보니 quest라고 뜬다. 힌트로 나온 2를 넣어보니 querry error라는 문장이 뜬다. 주석에서 admin의 no 값이 2라고 했기 때문에 쿼리문을 조작해서 no의 값을 2로 만들 수 있을 것 같다. 0) or no like 2 preg_match(.. 2020. 11. 5.