목록분류 전체보기 (9)
blacksalamander
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pEPdu/btqCbhFy9M0/F344Yy7hZ9XPkJmoYJQ790/img.png)
Source Code Analysis Source Code에 대한 자세한 설명은 아래 링크로 이동하길 바란다. https://blacksalamander.tistory.com/8
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6mIT8/btqBZqJPsCo/IPAQiiUWYTMqYvhtEncIcK/img.png)
Source Code Analysis Source Code를 보았을 때 저번 문제인 gremlin과 매우 유사하게 보인다. Source Code에 대해 자세한 설명은 하지 않고 문제를 해결하기 위해 중요한 부분만 다루도록 한다. Source Code에 대한 자세한 설명은 아래 링크로 이동하길 바란다. https://blacksalamander.tistory.com/8
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Xwc3M/btqBUTYr5iK/IYHYpYDSOErwBsC3gWEYo1/img.png)
Source Code Analysis 먼저, Source Code를 분석해보도록 한다. PHP 언어로 이루어져 있으며 include 명령어를 이용하여 config.php 라는 외부 파일을 호출하는 것을 확인할 수 있다. 다음으로 login_chk() 함수를 실행하였는데 함수의 내용은 보이지 않으므로 정확히 어떠한 역할을 수행하는지 알 수 없지만 함수명으로 보아 사용자가 로그인이 되어있는지 확인하는 것으로 판단된다. 그 후, dbconnect() 함수를 실행하여 데이터베이스와 연결하는 것을 알 수 있다.
먼저 프로그램을 실행시켜본다. 아무 값이나 입력하고 Register 을 눌렀을 때 어떠한 출력 없이 종료되는 것을 볼 수 있다. OllyDbg 프로그램을 이용하여 알아보자. 문자열을 통해 본 결과 Congratulation! 이란 것이 있다. 이 부분을 포함한 섹션을 살펴보자. 실행 창의 TextField 에 abcdefghij 을 입력했다. 계속 실행하다 보면 CALL Project1.00404608 에서 EAX 의 abcdefghij 값과 EDX 의 2VB6H1XS0F 값을 비교하고 JNZ SHORT Project1.00450396 에서 같은지 다른지를 판단하는 것을 알 수 있다. 값이 2VB6H1XS0F 라는 것을 알아냈다. 값 : 2VB6H1XS0F
먼저 프로그램을 실행시켜본다. 아무 값이나 입력하고 Click! 을 눌렀을 때 어떠한 출력 없이 종료되는 것을 볼 수 있다. OllyDbg 프로그램을 이용하여 알아보자. 문자열을 통해 본 결과 Congratulation! 이란 것이 있다. 이 섹션의 첫 부분에 BreakPoint(F2) 을 걸어놓고 Run(F9) 을 한다. 실행 창이 뜨고 TextField 에 abcdefghij 을 입력했다. 계속 실행하다 보면 CALL Project1.00404608 에서 EAX 의 abcdefghij 값과 EDX 의 913465 값을 비교하고 JNZ SHORT Project1.0045035B 에서 같은지 다른지를 판단하는 것을 알 수 있다. 값이 913465 라는 것을 알아냈다. 값 : 913465
먼저 프로그램을 실행시켜본다. 아무 값이나 넣었을 때 틀렸다는 것을 볼 수 있다. ReadMe.txt 을 읽어보면 Serial 이 5B134977135E7D13 일 때 Name 값을 찾으라고 쓰여있다. 이제 Name 값을 찾아보자. OllyDbg 프로그램을 실행시킨 후 EasyKeygen 파일을 연다. 문자열에서 우리가 접근할 수 있는 데이터를 확인해본다. Text string 을 보면 아까 오답을 넣었을 때 출력된 문자열(Wrong)이 보인다. 더블클릭하여 들어가 보자. 이 부분을 포함하는 함수의 첫 부분으로 가본다. 이제 프로그램의 흐름을 파악해보자. 계속 실행하다 보면 프로그램 창에서 Input Name 을 입력받는다. Name 에 abcdefghij 을 입력했다. 값이 0x0019FE18 주소에 ..
먼저 프로그램을 실행시켜본다. 이러한 창이 나오고 입력받을 곳이 있다. 아무 값이나 입력해본다. 값이 틀렸다. 이제부터 이 값을 알아보자. Cutter 프로그램을 실행시킨 후 EasyCrackMe 파일을 연다. 하단에 Strings 클릭한 후 우리가 접근할 수 있는 데이터를 확인해본다. 아까 오답을 넣었을 때 출력된 문자열(Incorret Password)이 보인다. 오른쪽 마우스로 클릭 후 Xrefs를 선택한다. 등록된 것(sub.USER32.dll_GetDlgItemTextA_401080 ...)을 선택하여 Graph 형태로 본다. 맨 위부터 차근차근 보자. 여기서 cmp 명령어를 보면 [ESP+0x5] 와 0x61(아스키코드 : a) 을 비교하고 있다. 다음엔 [ESP+0xa] 위치에서 5y 와 비..
https://www.youtube.com/watch?v=S6uFitUIYlc&list=PLnIaYcDMsScxpiB8VpGhM4-NtovcM_uB9&index=2 위 사이트를 통해 학습하였다. 프로세스 : 프로그램이 실행되는 것 메모리 : 가상메모리에 프로그램 파일이 올라감 가상메모리 : 컴퓨터가 물리메모리를 효율적으로 사용하기 위한 것 물리메모리 : 8GB RAM 레지스터 : CPU가 사용하려고 가지고 있는 데이터 EAX : 계산에 대한 저장을 하는 데이터 EBX : 베이스 레지스터 ECX : 카운터 레지스터(숫자를 셈) EDX : 데이터 레지스터 ESI : 소스 인덱스(출발지) EDI : 데스티네이션 인덱스(목적지) EBP : 스택의 아랫부분(베이스) 포인터 ESP : 스택의 윗부분(탑) 포인터 E..