24번문제이다. 언뜻 보면 무슨 소린지모르겠다.

눈에띄는거라곤 맨밑에 Wrong IP!...

이문제에선 IP가 중요한가보다.

 

소스를 보면 주석처리 되어있는게 보인다.

이게 힌트임이 틀림없다.

 

 

php구문이다. 차근차근 내려가보자.

 

일단 눈에 띄는건 ip를 REMOTE_ADDR 이라고 한것이다.

 

if문이 보이는데 여기에서도 보이는 REMOTE_ADDR..

아까 위에서 ip라고 한거같았다.

str_replace는 php 명령어로

str_replace(검색할문자,바꿀문자,영역)

이렇게 사용된다.

정리해보면, 만약 REMOTE_ADDR이라 칭해지는 ip주소의 쿠키값이

12이면 ""공백으로 바뀌고, 7.이면 ""공백으로 바뀌고, 0.이면 공백으로 바뀐다 라고

할수 있을것같다.

이건 지극히 나의 생각일뿐이다.

 

 

 

 

여기선 만약 ip주소가 127.0.0.1이면 문제가 풀리고

그렇지 않으면 아까 맨처음에 봣던 Wrong IP! 라고

뜬다고한다.

ip를 127.0.0.1로 바꿔야 하나보다.

 

위에서 말했듯이 쿠키값을 생각해서 쿠키값변조를 시킬

쿡시툴바를 이용해 ip주소인 REMOTE_ADDR을 변조시켜보겠다.

생각해보면 127.0.0.1이라고 그냥 치게되면 12와 7. 그리고 0.이 공백으로 바뀌어

그냥 1만 인식하게된다.

그러므로 1122라고쓰게되면 가운데 12가 공백으로 처리되 12로 인식이되고,

77..으로 쓰게되면 7.이 공백으로 처리되 7.

00..은 0.이 공백으로 처리되 0. 으로 인식이된다.

 

쿠키값을 변조시킨후에 뒤로갔다가 다시 24번 문제를 클릭하게되면 ip 주소가 127.0.0.1로 바뀌면서

문제가 해결된다.

 

 

 

'해킹문제풀이 > http://webhacking.kr' 카테고리의 다른 글

Challenges 17.  (0) 2013.03.08
Challenges 14.  (0) 2013.03.03
Challenges 4.  (0) 2013.02.22
Posted by MUSH1

레지스터는 CPU 내부에서 데이터를 일시적으로 저장하는 장소이다.

쉽게말해서 메모지 역할이라고 생각하면된다.

 

 

 

32비트 : EAX

16비트 : AX (8비트 : AH 8비트 : AL)

 

범용레지스터

 

EAX 레지스터

-> 누산기인 EAX 레지스터는 입출력과 대부분 산술 여산에 사용. 예를 들어 곱셈, 나눗셈, 변환 명령은 EAX를 사용한다.

EBX 레지스터

-> DS 세그먼트에 대한 포인터를 주로 저장. ESIEDI와 결합하여 인덱스에 사용된다.

메모리의 주소지정을 확장하기 위해 인덱스로 사용될 수 있는 유일한 범용 레지스터이다.

ECX 레지스터

-> 루프가 반복되는 횟수를 제어하는 값, 왼쪽이나 오른쪽으로 이동되는 비트 수 등을 포함.

EDX 레지스터

-> 입출력 연산에 사용하며 큰수의 곱셈과 나눗셈 연산에서 EAX와 함께 사용.

 

세그먼트 레지스터

CS 레지스터

-> 코드 세그먼트는 실행될 기계 명령을 포함한다.

-> CS 레지스터는 코드 세그먼트의 시작 주소를 가리킨다.

DS 레지스터

-> 프로그램에 정의된 데이터, 상수, 작업 영역을 포함한다.

-> DS 레지스터는 데이터 세그먼트의 시작 주소를 가리킨다.

SS 레지스터

-> 스택 세그먼트는 프로그램이 실행 될 때, 실행 과정에서 필요한 데이터나 연산 결과 등을 임시로 저장하거나 삭제할 때 사용된다.

-> SS레지스터는 스택 세그먼트의 시작 주소를 가리킨다.

 

포인터 레지스터

EBP 레지스터

-> 스택 세그먼트에서 현재 호출되어 사용되는 함수의 시작 주소 값을 저장한다.

ESP 레지스터

-> 현재 스택 영역에서 가장 하위 주소를 저장한다. EBP와 마찬가지로 실제 메모리 상의 주소를 참조할 때 SS레지스터와 함께 사용된다.

EIP 레지스터

-> 다음에 실행될 명령의 오프셋을 포함한다.

-> 현재 실행 중인 코드 세그먼트에 속한 현재 명령을 가리키며, 실제 메모리상의 주소를 참조할 때 CS 레지스터와 함께 사용된다.

 

인덱스 레지스터

ESI & EDI

-> ESIEDI는 주로 메모리의 한 영역에서 다른 영역 즉, Source에서 Destination으로 데이터를 연속적으로 복사할 때 사용된다.

 

08x86 시스템의 메모리

메모리의 기본 구조

 

스택

후입선출(LIFO : Last-In, First Out) 방식에 의해 정보를 관리하는 데이터 구조.

나중에 들어온게 먼저 나간다.

스택은 프로그램의 함수 내에서 정의도니ᅟᅳᆫ데 함수 종료와 동시에 사라지는 자동 변수가 저장되고 함수가 호출될 때 함수 내 로컬 변수 등이 저장되는 곳이다.

 

스택과 더불어 메모리에서 프로그램 실행과 관련해 매우 중요한 역할을 한다.

힙은 프로그램이 실행 될 때 가지 미리 알 수 없는 가변적인 양의 데이터를 저장하기 위해, 프로그램의 프로세스가 사용할 수 있도록 에약 되어있는 메인 메모리의 영역이다.

 

어셈블리어의 구조

Label :             MOV             AX,                 BX             ; comment

라벨             작동코드     1피연산자     2피연산자         설명

 

리틀엔디언 방식

컴퓨터에서는 메모리에 데이터를 저장하는 방식을 두가지로 구분하는데, 빅엔디언과 리틀엔디언으로 구분한다.

cpu가 메모리에 데이터를 저장할 때 어느 순서로 저장하는가에 대해 나눠지는데 왼쪽->오른쪽 은 빅엔디안이고, 오른쪽->왼쪽 은 리틀엔디언이다. 데이터는 리틀엔디언 방식에 의해 스택에 저장되고 참조된다.

예를들면 0x12345678이란 값이 있을 때 빅엔디안은 0x12345678로 저장. 리틀엔디안은 0x785563412로 저장.

 

기본명령

산술연산

ADD AL 4

-> AL이 원래 2였다면, 명령실행 후 AL6이 된다.

SUB AL 4

-> AL이 원래 8이였다면, 명령실행 후 AL4가 된다.

CMP AL 4

-> AL이 원래 5였다면, 명령 실행 후 AL5가 된다.

0이 아니므로 거짓이 된다. CMP A,B의 경우 A에서BqoS 값이 0이면 참이된다.

 

데이터전송

MOV AX, [BP+4]

-> BP의 주소에 4 더해진 주소에 있는 데이터 값을 AX에 대입한다.

PUSH 1피연산자

-> PUSH 명령은 스택에 데이터를 삽입할대 사용한다. 다음 그림과같이 스택은 커지고, 스택포인터(SP)는 데이터 크기만큼 감소한다.

 

 

POP 1피연산자

-> POP 며령은 스택에서 데이터를 삭제할 때 사용한다. 스택에서 삭제된 명령은 반환 값으로 받아 사용할수 있으며 다음 그림과 같이 스택포인터는 삭제하는 데이터 크기만큼 증가한다.

 

 

 

LEA AX [BP+8]

-> BP의 현재 값이 0x10000004이라면, MOV 명령처럼 BP+80x1000000C의 주소 값을 가져오는 것이 아니라 Ox10000004의 주소에 있는 값에 8을 더해 AX에 대입한다.

 

논리명령

AND

-> AND 명령은 대응되는 비트가 둘 다 1일때만 결과가 1이고, 그 이외는 모두 0이된다.

, 2진수로 바꿔준후 대응해야한다.

OR

-> 대응되는 비트중 하나만 1이어도 결과가 1이고, 둘다 0인 경우에만 0이된다.

XOR

-> 대응되는 비트중 한 비트가 1이고 다른 비트가 0이면 결과가 1이된다. 그리고 두 개의 비트가 모두 0 또는 1일 때 0이된다.

NOT

-> 피연산자의 1의 보수를 구하는 작동코드로, 각 비트를 반전한다. 1일 경우 0, 0일 경우 1

TEST

-> CMP 명령처럼 데이터의 두 값을 비교할 때 사용한다. , CMP처럼 제 1피연산자에서 제2피연사자 값을 빼는 과정이없다. , 데이터의 변경 없이 단순 비교만 한다.

 

스트링 명령

REP

-> ADDMOVS와 같은 작동 코드의 앞에 위치하며, CX0이 될 때까지 뒤에오는 스트링 명령을 반복한다.

MOVS

-> 바이트나 워드, 더블워드를 옮기는 명령으로 각각 MOVSB, MOVSW, MOVSD가 있다.

더 쉬운 이해는 다음 리버싱 문제를 풀 때 설명할 것이다.

 

제어 전송

JMP 100h

-> 대표적인 점프 명령으로 프로그램을 실행할 주소 도는 라벨로 이동한다.

CALL 1피연산자

-> JMP처럼 함수를 호출할 때 사용하고제1피연산자에 라벨을 지정한다. 하지만 CALL은 리턴주소로 IP주소를 백업하여 “PUSH EIP +JMP”와 의미가 같다.

RET(Return from CALL)

-> 함수에서 호출한 곳으로 돌아갈 때 사용하는 명령. RET“POP EIP”와 의미가 같다.

CALLRET의 예를 함께 살펴보겟다.

 

위의 AX0x08h라고 하자.

위의 경우 SUBR 함수를 호출하면 SUBR 라벨이 있는 곳에서 RET 까지 실행된다.

이때 INC AX가 있어서 AX0X09h가 된다. RET 명령이 실행되면 CALL 다음 라인인 ADD AX,10h가 실행되어 AX0X19h가 될 것이다.

LOOP(Loop CX timex)

-> 문장들의 블록을 지정된 횟수만큼 반복한다. CX는 자도적으로 카운터로 사용되며 루프를 반복할 때 마다 감소한다.

 

 

'IceB1u3 > System' 카테고리의 다른 글

시스템공부를 시작하며..  (0) 2014.01.03
Posted by MUSH1

기간 : 2014.01.03 ~

참고 : 시스템 해킹과 보안 -한빛미디어-

 

총 4파트로 나눠져있고, 챕터로는 13개의 챕터로 나누어져있습니다.

 

Part 01. 시스템해킹을 위한 기초 지식

Chapter 01. 운영체제에 대한 이해

Chapter 02. 80x86 시스템에 대한 이해

Chapter 03. 계정과 권한

Part 02. 시스템 해킹

Chapter 04. 패스워드 크래킹

Chapter 05. 리버스 엔지니어링

Chapter 06. 레이스 컨디션

Chapter 07. 버퍼 오버플로우

Chapter 08. 포맷 스트링

Chapter 09. 백도어

Part 03. 운영체제 보안

Chapter 10. 윈도우 시스템 보안 설정(윈도우 2008)

Chapter 10. 유닉스 시스템 보안 설정(솔라리스 9, 10)

Part 04. 로그와 침입 탐지

Chapter 12. 시스템 로그 분석

Chapter 13. 흔적 제거와 침입 추적

 

기간은 얼마나 걸릴지 모르나, 관심을 가지고 꾸준히 공부해볼 의향입니다. :D

'IceB1u3 > System' 카테고리의 다른 글

2장. 레지스터와 어셈블리어 정리  (0) 2014.01.15
Posted by MUSH1

먼저 이 글은 http://www.androidpub.com/ 에서 활동하고 있는 회색님의 글을 퍼옴을 밝히는 바입니다.

출처 http://www.androidpub.com/588

-------------------------------------------------------------------------------------------------------

안녕하세요. 회색이라고 합니다. (저의 정체가 궁금하신 분은 여기를 확인하세요)

이번에 안드로이드에 Android 어플리케이션 개발에 대한 강좌를 연재하기로 하였습니다.  

회색은 전세계 안드로이드 1차 경진대회에서 한국에서는 유일하게 입상하고 한국에서는 가장 먼저 시작해서 안드로이드 앱 개발을 하고 있습니다. 강좌를 빠르게 작성하지는 못할것 같습니다만 오프라인에서 가끔씩 교육을 하면서 얻은 지식을 더 많이 공유할 수 있도록 틈틈히 글로 작성하여 공부하시는 분들에게 조금이나마 도움이 되도록 할 예정입니다. 강좌에서 이해가 안되는 부분이나 잘못된 부분은 댓글로 적어 주시면 강좌의 내용을 업데이트하여 다음에 공부하는 분들에게도 도움이 될 수 있으니 부담없이 적어주시기 바랍니다.
 
그 동안 블로그(http://graynote.tistory.com)에도 개발 관련 자료를 조금씩 올렸는데 앞으로는 이 곳을 중심으로 강좌를 작성하고 자료를 올릴 생각입니다. 강좌와 별도로 개발하시면서 궁금한 부분이 있으시면 Q&A게시판도 있으니 그 곳에서 서로 질문하고 답할 수 있었으면 합니다. 

본 강좌는 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스 안에서 퍼가실 수 있으며 반드시 출처와 작성자를 표시해주시기 바랍니다.

---------------------------------------------------------------------------------------------------------------

안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK 설치 및 실행

안드로이드 개발 
안드로이드의 개발은 크게 두 분야로 나누어서 생각할 수 있습니다.

1. 안드로이드 SDK위에서 어플리케이션의 개발
2. 안드로이드 플랫폼의 포팅 및 개발

1번은 주소록, 게임, 뮤직플레이어 등과 같은 것들을 개발하는 것입니다. 안드로이드 어플리케이션은 Java언어로 개발이 되기 때문에 Java언어를 다룰 수 있는 능력이 필요합니다. 먼저 이클립스 개발환경과 안드로이드 SDK를 설치하는 것으로 시작을 합니다.

2번은 안드로이드를 새로운 디바이스에 탑재하고자 할때 즉 안드로이드를 포팅하고자 할 때 알아야할 부분입니다. 다비이스 드라이버, 리눅스 커널 그리고 미들웨어단을 봐야 하는 부분입니다. 좀더 안드로이드 내부 깊숙히 알아보고 싶으시다면 도전해볼 수 있습니다. 일단 소스 다운로드 받아서 빌드해보면서 시작을 하시면 됩니다. C/C++/어셈블리 언어 개발능력이 필요합니다.

안드로이드를 시작하실 때 위 두부분중 어디에 관심을 가지고 있는지를 판단하는게 우선입니다. 두 개가 어떤 차이가 있는지도 잘 모르겠다라고 하시는 초보 분은 1번 어플리케이션 개발을 먼저 시작하는 것을 추천합니다. 그리고 앞으로 제가 하는 강좌는 어플리케이션 개발을 위주로 구성이 될 것입니다.

안드로이드 SDK 설치 및 실행
안드로이드 SDK의 설치는 이클립스 3.4 버전을 기준으로 설명합니다.  

1. Java SDK 설치

http://java.sun.com/javase/downloads/index.jsp 
Java SE Development Kit (JDK) 6 를 설치합니다.

2. 이클립스 설치

http://www.eclipse.org/downloads/ 
Eclipse IDE for Java Developers 버젼을 다운로드 받습니다. 안드로이드에서 WST를 사용하는데 기본으로 WST가 포함되어있으니 새로 설치하신다면 위 버전을 추천합니다. 설치할 디렉토리에 압축을 풉니다.

3. Android SDK 설치

http://developer.android.com/sdk
약관에 동의하신 후 Android 1.0 SDK 중에 자신의 플랫폼에 맞게 압축된 SDK 파일을 다운로드 받습니다.
SDK설치 할 디렉토리를 만들고 압축을 해제하니다.
디렉토리 위치에 한글이 포함되어 있으면 안됩니다.

4. 안드로이드 Eclipse 플러그인 설치 (ADT) 

          방법1 - 인터넷에서 설치

          Eclipse 3.5 (Galileo)

                    Help/Install New Software
                    Add 버튼 클릭
                    Name엔 적당히 Android PlugIn이라고 채우시고, Location에 https://dl-ssl.google.com/android/eclipse/ 넣음
                    OK를 누르고
                    리스트에 표시된 Developer Tools 라고 되어있는 체크박스를 체크한후 Next, Next, 약관 동의, Finish 

                    위 URL이 안된다면 http://dl-ssl.google.com/android/eclipse/로도 시도해보세요. (https -> http)

  Eclipse 3.4 (Ganymede)

설치된 이클립스를 실행시킨 후, 메뉴의 Help/Software Update 실행 
Available Software 탭으로 이동 
Add Site : https://dl-ssl.google.com/android/eclipse/ 
새로추가된 사이트 밑에 Developer Tools 라고 되어있는 체크박스를 체크한후 Install 
Android Development Tools와 Android Editors가 체크되어있는지 확인합니다. 
약관에 동의한후 Finish를 클릭하면 인스톨 됩니다.

위 URL이 안된다면 http://dl-ssl.google.com/android/eclipse/로도 시도해보세요.

방법2 - 파일을 받아서 설치

인터넷에서 설치가 에러가 나는 경우가 잦습니다. 그 경우 파일을 직접 받아서 설치합니다.

http://developer.android.com/sdk/adt_download.html

현재 SDK에 맞는 플러그인 버전 선택하여 하드디스크에 저장 
Add 까지는 방법1과 동일
Archive 선택 
다운로드 받은 플러그인 zip 파일 선택
나머지는 방법1 과정과 동일

5. 이클립스 안드로이드 SDK 설정

이클립스의 메뉴 Windows/Preference 실행 
왼쪽 탭에서 Android 선택 
Browse를 한후 SDK를 설치한 디렉토리 선택 (디렉토리 패스에 한글이 들어가 있으면 안됩니다.)
Apply후 OK

6. 안드로이드 버전별 다운로드

안드로이드 2.0 SDK 부터 새로 생긴 방식입니다. 각 버전별 에뮬레이터 및 SDK를 별도로 다운로드 받게 되어있습니다.


sdkavd0.JPG 

Window/Android SDK and AVD Manager 실행

sdkavd1.JPG  

Available 패키지에서 설치를 원하는 API 버전 선택 

(현재 https로 시작되는 것은 에러가 나는 경우가 종종 있습니다. 이경우 http://로 시작하는 주소를 Add Site로 추가합니다.

Install Selected 

설치가 모두 완료되었습니다.

에뮬레이터 AVD의 설정

Android SDK 1.5 부터 AVD라는 새로운 개념이 생겼습니다.  http://www.androidpub.com/35413 에 설명을 추가했으니 따라서 설정해주시기 바랍니다.  

안드로이드 프로젝트 생성 및 실행

이클립스 실행
메뉴에서 File / New / Project선택 
Android 선택 
Project Name설정 

예)
Project Name : MobilePlace Lecture
Package Name : kr.mobileplace.lecture
Activity Name : Main
Application Name : MobilePlace

메뉴 Run/Run Configurations 실행 
안드로이드 어플리케이션에서 오른쪽 마우스 클릭후 New 선택 
Configuration Name 변경 
Browse후 Test Project선택 
Apply 후 Run 실행

에뮬레이터가 실행되며 Hello World를 표시한 어플리케이션이 실행됩니다.

SDK문서와 APIDemos

안드로이드 SDK에 대한 문서는 설치한 SDK디렉토리 밑에 doc/에 존재합니다. 그러나 그것만 보고 프로그래밍할 수 있는 사람은 많지 않습니다. 많은 API의 경우 실제 어떻게 사용되는지 Sample Code를 보고 활용하는 것이 좋습니다.

코딩할 때 참고용 소스로 가장 좋은 것은 SDK설치시 같이 첨부되는 ApiDemos 프로젝트 입니다. SDK디렉토리 밑에 sample/ApiDemos에 위치하며 항상 이클립스 프로젝트에 넣어놓고 참고하는 것이 좋습니다. Android 프로젝트를 만들때 Create project from existing source를 선택하고 Location을 Browse해서 samples밑에 ApiDemo를 선택한 후에 확인을 누르시면 이클립스에서 로드됩니다.

거의 모든 API의 사용법, XML의 사용법이 총 망라되어있으니 API를 사용할 때는 JavaDoc과 함께 먼저 ApiDemos프로젝트의 소스를 꼼꼼히 살펴보시기 바랍니다.


관련링크
안드로이드 개발 공식 사이트 : (영문) http://developer.android.com
안드로이드 개발 환경 구성 :   (영문)  http://developer.android.com/sdk/installing.html

 

Posted by MUSH1

☆Ollydbg(올리디버거)란?


▶리버싱을 하려면 디스 어셈블리 툴과, 디버그 툴이 필요한데

올리 디버거는 디스 어셈블리와, 디버그 두가지 모두 가능한 툴이다.


올리디버거는 API 함수들을 잘 분석해 주고,

많은 플러그린(Plugin)이 있어서 많은 지원을 해준다.


디스 어셈블러란?


▶ 기계어를 어셈블리어로 바꾸는 것을 말한다.



odbg110.zip


Ollydbg를 다운받았으면 

이제부터 Ollydbg 초기설정을 시작해줘야해요.




다운을 받은후 폴더를 열면 나오는 화면이예요.



초기 설정을 해주시려면 일단 새폴더 두개를 만든후 Plugin과 UDD로 파일명을 바꾸세요.




Ollydbg에 들어가셔서 option 에 Appearance 에 들어가시면되요.









보이시는 Browse를 통해 UDD와 Plugin 의 경로를 변경해 줄건데요.

여기서 UDD폴더에는 백업 파일이 들어가요. 따로 만들어준 이유는 많은 작업을 하다보면 백업파일때문에 정리가 안되고 ,지저분해지기 때문에 폴더를 다로 만들어서 관리하려고 하는거예요.

Plugin 폴더에는 플러그인이 들어가요 . 이 폴더 여시 관리하기 위해서 만든 폴더예요.



아까 만든 폴더로 경로를 지정해주시면 되요




경로가 지정되었으면 확인.



Ollydbg를 재시작하시면 설정이 완료되요.

근데 재시작 하시기전에....


BOOKMARK.DLL

Cmdline.dll

dbghelp.dll

파일을 드래그해서 Plugin 폴더에 넣어주세요.





Plugin 폴더에 넣으시면 초기설정은 완료된거예요.


Posted by MUSH1

-- [ 웹게임 ] Level. 2 --



Level 2 문제를 풀어보도록할게요.

링크에 들어가보니 10개정도의 게시물이 있네요.

1번도 보고 2번도 보고.. 3번을 보는데...

저 3번하고 4번은 왜 txt 형식인지.. 일단은

눌러보죠




?? 레벨 제한이 걸려잇네요..




4번도 레벨제한이 걸려있고요.. 근데 이건 3번 게시물보다는 레벨제한이 낮네요

그래서 의아해서 맨위에있는 공지를 눌러봐야겠어요



읽어보니까 특정 level이상만 글을 읽을수있다고하는데요..

그럼 레벨 권한만 높혀주면 이문제는 풀리는건가봐요

쿡시툴바를 써서 쿠키값을 변조 시킬거에요.




레벨을 보니 아.. 3인네요.. 그러니까 게시물을 몇개 못보는거같아요

저 레벨제한을 제일높은 레벨 7로 바꿔볼께요.




불법적인 접근이라네요..

다른글을 아무리 눌러도 불법적인 접근이라고만 뜨네요..

그럼 레벨을.. 좀 낮춰볼라고요..ㅎ



레벨을 5로 바꿧더니 어라..ㅎㅎ

Answer.txt 게시물에 들어갈수잇어요

들어갓더니 오른쪽 상단에 Download가 .. 오..

클릭해보니 다운받을수잇네요



이때 문득 생각나는게 레벨 제한 7의 Password.txt 게시물..

오... 이건 제한레벨을 높이면 풀리는문제가 아니라

레벨제한을 높여서 Password.txt를 보는건가봐요

저 Password.txt 안에 이번 2번문제 답이 있는거같은..ㅎㅎ




그러기 위해선 다운로드 링크를 찾아야하므로 오른쪽 상단에있는 Answer.txt 의 속성을 확인하구요

주소(URL)을 복사해서 url 창에 복사해봅시다.




복사한걸 제가 원하는 Password.txt로 바꾸죠 ㅎㅎ 



Enter ㅋㅋ



열기를 누르면 txt 파일이 뜰거에요 ㅎㅎ

기대되네요..


... 당황했는데 이건 답이 아닐거에요 ㅎㅎ..

그쵸... 그래서 base64 decode가 생각이나

decoding 하려고해요 ㅋㅋ

대강 저런 글자가 32개가 있으면 md5를 의심해보라는

선배의 말을 잠시 참고해보면서..

base64 decode를 3번정도 해보면



문제가 풀리게 됩니다. 2번문제의 Password를 알려주네요.




'해킹문제풀이 > 와우해커-웹게임' 카테고리의 다른 글

-- [ 웹게임 ] Level. 1 --  (0) 2013.03.11
Posted by MUSH1

-- [ 웹게임 ] Level. 1 --




웹게임 1번 문제입니다. 사이트에 들어가면 1번 문제가 무엇인지 알게될겁니다.

힌트까지 미리 주었네요. php 소스코드를 봐야한다는데요

여기서 php 소스코드를 보는 법은 url에 xxxx.php라고 써있는 상태를 xxxx.phps라고 바꾸시면 됩니다.

phps가 php source 의 약자라고하더군요.

사이트로 들어가볼까요.


일단 겉으로 보기에는 ?key= ....key 값을 찾는건가봐요

힌트에 php소스코드를 보라했으니까 아까 위에서 말한것처럼 해보죠.




phps를 붙이면 아래와 같은 소스가 나옵니다.


echo는 c언어의 printf와 같은 역할을 합니다. 값을 출력하는것이죠.

if문 좀더 자세하게 봐볼까요.



if문에 key의 변수가 "wowhacker_hardware"일경우

키값이 나온다고 하는데요. 그럼 url에 key값을 "wowhacker_hardware"으로 지정해줘볼까요




입력을해주면..


key 값에 wowhacker_hardware 값이 들어가게되므로 WEBGAME KEY 값이 나오게 되네요.


인증코드에 넣고 GoGo~


이제 Level.2로 가보시죠.


'해킹문제풀이 > 와우해커-웹게임' 카테고리의 다른 글

-- [ 웹게임 ] Level. 2 --  (0) 2013.03.13
Posted by MUSH1

Challenges 17.


 

소스를 먼저 살펴볼게요


눈에 띄는게 unlock 이네요 저 unlock의 값을 알면되는데 저걸 다 계산할순 없겟죠..

자바스크립트 구문이므로 자바스크립트를 이용해서 unlock의 값을 알아본 후,

unlock 값을 입력하고 check를 누르면 팝업창이뜨면서 패스워드를 알려주는거같아요.


만약 unlock 값이 아닌경우에는 wrong!이 뜨게 되구요.

자바스크립트를 이용해볼게요 어떻게 이용해 볼까 하다가

제가 찾아봤는데 주소창에 자바스크립트 구문을 넣어도 반응을 하더라고요



이렇게 팝업창이 뜨더라고요 그래서 의심이 가는 unlock을 알려달라고 요청해 보려고합니다.

javascript:alert(“unlock”); 이라고 입력하시면 안되요

이렇게 입력하시면 팝업창에 unlock이 뜨겠죠? 근데 저희가 알고싶은건 unlock의 값이기 때문에 “”를 제외하고 입력해볼게요.


unlock의 값을 알게되었으므로 저 값을 입력해보죠.


패스워드를 알려줬어요 이제

14번 풀이처럼 Auth에 들어가 Flag에 패스워드를 입력하면 문제가 풀리게됩니다.

'해킹문제풀이 > http://webhacking.kr' 카테고리의 다른 글

Challenges 24.  (0) 2014.01.17
Challenges 14.  (0) 2013.03.03
Challenges 4.  (0) 2013.02.22
Posted by MUSH1

Challenges 14.

 

 

소스를 보면 check를 클릭하면 ck()으로 넘어가므로 function ck()를 자세히 들여다 보면서 분석해 보자.

 

한줄 한줄 분석해보면,,,

 

ul이라는 변수가 document.URL 이라는건데 URL 이면

 

현재 주소창에 써있는 URL을 의심해볼 수 있다.

 

indexof는 해당문자열의 자릿수를 반환하는 메소드이다.

.kr이 보이는 . 까지가 0부터 시작하면 17번째 자리이므로 ul17로 생각.

 

17 * 30 = 510

ul=510

 

답을 입력하면 패스워드를 알려준다.

만약 틀리면

잘못되었다고 팝업창이 뜰 것이다.

Auth에 들어가 Flag260100을 입력하면

(Auth를 찾아보니 담당자의 승인이라는 뜻이다.)

'해킹문제풀이 > http://webhacking.kr' 카테고리의 다른 글

Challenges 24.  (0) 2014.01.17
Challenges 17.  (0) 2013.03.08
Challenges 4.  (0) 2013.02.22
Posted by MUSH1

4번문제를 풀기위해선 브루트포싱(brute force) 기법을 알아야한다. 브루트포싱기법은 일반인도 할 수 있는 공격기법이다. 두가지 유형으로 나눠지는데 손수 공격과 프로그램 공격법으로 나눠진다.

프로그램 공격은 손수 하는 것보다 시간이 적게들고 힘이들지 않지만 정확하지 않은 경우도 나타난다. 그러나 손수 공격하는건 정확도가 높지만 시간이 많이들고 정신력과 끈기가 필요하다. 문제를 풀면서 생각을 해나가자.

로그인을 성공시켜야 하는 것 같다. 그러나 우리에겐 주어진 힌트가 없으므로 소스보기를 먼저 확인한다.

힌트가 소스에 주어져있고, admin으로 접속해야하는데 패스워드 범위가 2000부터 2999까지라는걸 알수 있다.

 

guest로 로그인한 화면


 

여기서 노가다로 2000부터 2999까지 일일이 확인하는게 손수 공격이다.

프로그램이 없으면 노가다를 해야 풀리는 문제.

 

 

'해킹문제풀이 > http://webhacking.kr' 카테고리의 다른 글

Challenges 24.  (0) 2014.01.17
Challenges 17.  (0) 2013.03.08
Challenges 14.  (0) 2013.03.03
Posted by MUSH1
이전버튼 1 2 이전버튼