Wargame/webhacking2017. 6. 9. 08:35

webhacking.kr 사이트의 23번 문제를 보면 다음과 같다.

<script>alert(1);</script>

위 스크립트를 넣어야 하는 것 같다.

우선 넣어보도록 하자.

no hack

위와 같이 출력이된다. 즉, 필터링이 되어 있다는 것을 알 수 있다. 하지만 어떤 문자가 필터링 되어 있는지 알 수 없기 때문에 가장 많이 필터링 거는 특수문자들을 확인해 보자.

<>()/ 

문자열을 넣었더니 필터링 되지 않는 것을 알 수 있다.

그렇다면 script 문자열과 alert 문자열이 필터링 되어 있다는 것인데, 문자열 사이에 공백을 넣어 입력해 보자.

<s c r i p t>a l e r t(1);</s c r i p t>

공백 문자로 우회가 되지 않았다. 

url을 보면 다음과 같이 요청이 된다.

code라는 변수에 입력란에 입력한 값이 URL 인코딩되어 GET 방식으로 요청하는 것을 확인할 수 있다.

공백 대신에 NULL을 입력하여보자.

code=<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>


url에 위와같이 넣으면 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 38번 문제  (0) 2017.06.18
[webhacking.kr] 35번 문제  (0) 2017.06.18
[webhacking.kr] 24번 문제  (0) 2017.06.08
[webhacking.kr] 18번 문제  (0) 2017.05.05
[webhacking.kr] 17번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 6. 8. 22:10

webhacking.kr 사이트의 24번 문제에 접속하면 다음과 같은 화면을 볼 수 있다.

ip 주소와 agent 정보가 나온다. 소스보기를 보면 index.phps를 볼 수 있다는 정보가 있다.


index.phps를 보면 다음과 같다.


코드를 보면 두 번째 if 문에서 ip 값을 채우는 것을 볼 수 있다.

이 if은 REMOTE_ADDR 이라는 이름의 쿠키에 값이 들어있으면 ip 값을 채운다.

ip 값을 채울 때 "12", "7.", "0." 문자열을 없애고 채우는 것을 알 수 있다.

즉, str_replace() 함수를 우회하여 ip 값이 127.0.0.1이 되면 된다.


ip 값이 127.0.0.1이 되기 위해서는 112277..00..00..1이 되면 된다.

Cookie 매니저를 이용해 REMOTE_ADDR 이름의 쿠키를 생성하면 다음과 같다

쿠키 매니저가 없으면 개발자 도구를 이용해 콘솔에 다음 명령어를 입력하면 된다.

javascript:document.cookie="REMOTE_ADDR=112277..00..00..1;"


위와 같이 설정하고 페이지를 새로고침하면 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 35번 문제  (0) 2017.06.18
[webhacking.kr] 23번 문제  (0) 2017.06.09
[webhacking.kr] 18번 문제  (0) 2017.05.05
[webhacking.kr] 17번 문제  (0) 2017.05.04
[webhacking.kr] 16번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 5. 00:29

webhacking.kr 사이트의 18번 문제를 보면 다음과 같다.

SQL Injection 문제이고 index.phps 페이지를 제공해 주었다.

index.phps 페이지를 보면 다음과 같다.

no라는 변수를 받아서 여러가지 문자를 필터링한다.

id='guest'이고 전달받은 no변수의 값에 대해 challenge18_table에 있을 경우 해당 id를 변수 q에 저장한다.

q의 값이 admin이면 문제가 풀리는 것 같다.

일단 id가 admin 이어야하기 때문에 기존 where문을 이용하면 안될 것 같다.

즉, id='guest' and no=$_GET[no] 이 조건을 무효화 시켜야 한다.

그러기 위해서 no 값에 0을 넣으면 true and false가 되기 때문에 무효시킬 수 있다.

그리고 나서 admin의 no값을 찾아야 하는데, 페이지만 봐서는 알 수가 없다.

일단 1을 넣으면 다음과 같은 화면을 볼 수 있다.

guest의 no 값이 1인것을 알 수 있다.

chellenge18_table에 어떤 데이터들이 들어 있는지 모르지만 guest의 no 값이 1이기 때문에

admin의 no 값은 2일 확률이 높다.

no=0%0Aor%0Ano=2를 입력해보면 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 23번 문제  (0) 2017.06.09
[webhacking.kr] 24번 문제  (0) 2017.06.08
[webhacking.kr] 17번 문제  (0) 2017.05.04
[webhacking.kr] 16번 문제  (0) 2017.05.04
[webhacking.kr] 15번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 23:43

webhacking.kr 사이트의 17번 문제를 보면 다음과 같다.

14번 문제와 유사한 것 같다.

일단 페이지 소스를 보면 다음과 같다.

unlock 변수에 엄청나게 복잡한 수식이 들어있다.

이를 계산해서 입력을 해야 되는 것 같다.

계산기를 이용해서 사칙연산에 맞춰 계산을 시도해도 된다.

하지만 필자는 디버깅을 통해 값을 알아내도록 하겠다.

페이지 소스에서 디버거 부분을 들어가면 다음과 같은 화면을 볼 수 있다.

sub() 함수가 있는 부분에 중단점을 걸고 아무 값이나 넣고 버튼을 누르면 아래와 같이 unlock의 값을 확인할 수 있다.

확인한 값을 따로 적어 놓고 해당 값을 입력창에 넣어 버튼을 누르면 다음과 같이 Password를 알 수 있다.

Password 값을 제출하면 17번 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 24번 문제  (0) 2017.06.08
[webhacking.kr] 18번 문제  (0) 2017.05.05
[webhacking.kr] 16번 문제  (0) 2017.05.04
[webhacking.kr] 15번 문제  (0) 2017.05.04
[webhacking.kr] 14번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 23:29

webhacking.kr 사이트의 16번 문제를 보면 다음과 같다.

어떤 정보도 볼 수 없으니 일단 페이지 소스를 보도록 하자.

mv() 함수와 kk() 함수가 정의되어 있다.

mv() 함수는 특정 키가 눌렸을 때 큰 별이 이동하는 것을 정의한 함수이고

kk() 함수는 작은 별을 생성해서 출력해주는 함수이다.

mv() 함수에서 동작하는 키 값을 보니 아스키값으로 되어 있는 것을 알 수 있다.

100, 97, 119, 115는 각각 d,a,w,s이고 각각 오른쪽, 왼쪽, 위, 아래 순으로 큰 별을 이동하도록 정의되어 있다.

124는 문자( | )로 페이지 이동이 이루어진다.


소스 분석을 통해서 아스키값이 124인 | 를 입력하면 다음과 같은 화면을 볼 수 있다.

Password가 출력이 됐다.

이 값을 제출하면 16번 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 18번 문제  (0) 2017.05.05
[webhacking.kr] 17번 문제  (0) 2017.05.04
[webhacking.kr] 15번 문제  (0) 2017.05.04
[webhacking.kr] 14번 문제  (0) 2017.05.04
[webhacking.kr] 12번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 23:08

webhacking.kr 사이트의 15번 문제를 보면 다음과 같다.

난감하기 그지없다.

아무런 정보 없이 알림창 하나만 나타나니 일단 burpsuite로 패킷을 잡아보자.

맨 아래줄에 password가 쓰여있다.

이 값을 제출하면 15번 문제가 풀린다.


'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 17번 문제  (0) 2017.05.04
[webhacking.kr] 16번 문제  (0) 2017.05.04
[webhacking.kr] 14번 문제  (0) 2017.05.04
[webhacking.kr] 12번 문제  (0) 2017.05.04
[webhacking.kr] 11번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 23:02

webhacking.kr 사이트의 14번 문제를 보면 다음과 같다.

아무런 설명도 되어있지 않고 Editbox 하나와 버튼 하나가 있다.

뭘 의미하는 건지 모르기 때문에 일단 페이지 소스를 보자.

Edit box의 이름은 input_pwd라는 것을 알 수 있고 이를통해 패스워드를 입력해야 하는 것을 유추할 수 있다.

버튼을 클릭하면 ck() 함수가 호출되는 것을 알 수 있다.

ck() 함수를 보면 ul 변수에 url을 저장하고 indexOf() 함수를 이용해 ".kr" 문자열의 위치값을 저장한다.

".kr" 의 위치값이 저장된 ul에 30을 곱하고 입력받은 input_pwd의 값과 비교한다.

두 개의 값이 같으면 Password를 alert() 함수를 이용해 출력해준다.


현재 url은 http://webhacking.kr/~~~~~ 이다.

순서대로 세 보면 ".kr"의 위치는 17임을 알 수 있다.

* IT와 관련해서 숫자는 0부터 센다.

17*30의 값인 510을 입력하자.


다음과 같이 알림창으로 Password를 출력해준다.

이 값을 제출하면 14번 문제가 해결된다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 16번 문제  (0) 2017.05.04
[webhacking.kr] 15번 문제  (0) 2017.05.04
[webhacking.kr] 12번 문제  (0) 2017.05.04
[webhacking.kr] 11번 문제  (0) 2017.05.04
[webhacking.kr] 10번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 16:58

webhacking.kr 사이트의 12번 문제를 보면 다음과 같다.

javascript challenge 라는 문자열이 출력된 화면이 나타난다.

아마도 javascript 문제인 것 같다.

페이지 소스를 보면 다음과 같다.

WorkTimeFun 변수에 String이 저장되고 eval 함수로 WorkTimeFun이 실행되도록 되어 있다.

일단 아스키코드가 어떤 문자열인지 알아내기 위해 burpsuite로 alert을 띄워보자.

위와 같이 WorkTimeFun 부분을 alert으로 감싸서 전달하면 다음과 같이 알림창이 뜬다.

코드를 보면 다음과 같다.

뭔가 복잡해 보이지만 if문을 보면 Alert으로 Password를 띄워주는 것을 알 수 있다.

if 문 안의 String부터 마지막 enco3 까지를 복사해서 마지막 eval 밑에 alert으로 추가해 주자.

위와 같이 수정해서 전달하면 문제가 풀리며 다음과 같이 flag가 나타난다.

flag 값을 제출하면 12번 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 15번 문제  (0) 2017.05.04
[webhacking.kr] 14번 문제  (0) 2017.05.04
[webhacking.kr] 11번 문제  (0) 2017.05.04
[webhacking.kr] 10번 문제  (0) 2017.05.04
[webhacking.kr] 8번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 16:04

webhacking.kr 사이트의 11번 문제를 보면 다음과 같다.


화면을 보니 pat가 있고 pat와 전달받은 val 값이 match 되면 문제가 풀리는 것 같다.

pat를 보면 정규표현식으로 되어 있다.

정규표현식을 모른다면 검색을 해봐야 한다.


일단 위 정규표현식을 보자.

[1-3] : 1 ~ 3의 값 중 하나

[a-f] : a ~ f의 값 중 하나

{5} : 앞의 문자를 5번 반복

_ : _

. : 앞의 한 문자

* : 앞의 문자를 0번 반복

IP : IP

\t : 탭 아스키값으로 %09


pat 값으로 나올 수 있는 것을 보면

1aaaaa_aIP%09p%09a%09s%09s

와 같은 형식인 것 같다.


이를 확인하기 위해 val 값에 넣어보자.


그러면 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 14번 문제  (0) 2017.05.04
[webhacking.kr] 12번 문제  (0) 2017.05.04
[webhacking.kr] 10번 문제  (0) 2017.05.04
[webhacking.kr] 8번 문제  (0) 2017.05.04
[webhacking.kr] 7번 문제  (0) 2017.05.04
Posted by Imp3rio
Wargame/webhacking2017. 5. 4. 15:26

webhacking.kr 사이트의 10번 문제를 보면 다음과 같다.

첫 화면만 보고 나면 당황스럽다..

그래도 문제를 풀기 위해 페이지 소스를 한번 보자.

화면의 O에 대한 코드를 분석해 보면 다음과 같다.

id가 hackme라고 되어 있는것으로 봐서 이 부분을 보면 될 것 같다.

위치가 0,0이고 클릭했을 때 left가 1씩 증가한다. 그리고 if문을 통해 left값이 800이면 url에 ?go=left값으로 넘어간다. 

O 위치에 마우스가 오게 되면 yOu로 변경된다.


코드를 분석한 결과 클릭을 800번 해야 한다.

클릭하기 귀찮으니 url에 go=800 을 주고 전달한다.

그러면 위와 같이 no hack 이라는 문자열이 출력이 된다.

소스 페이지에서 left 값을 799로 바꾸고 클릭을 한번 하는 방식으로 해보자.

위와 같이 수정을 한 뒤 O를 한번 클릭을 하면 10번 문제가 풀린다.

'Wargame > webhacking' 카테고리의 다른 글

[webhacking.kr] 12번 문제  (0) 2017.05.04
[webhacking.kr] 11번 문제  (0) 2017.05.04
[webhacking.kr] 8번 문제  (0) 2017.05.04
[webhacking.kr] 7번 문제  (0) 2017.05.04
[webhacking.kr] 6번 문제  (0) 2017.05.02
Posted by Imp3rio