Web/Web Hacking (Wargame)

[webhacking.kr] old-33

✏️ Check


이번 문제는 여러 번 변수 값을 전달해야 해결할 수 있는 문제다.

 

🔎 Analyze


challenge 33-1

GET 방식으로 'get' 파라미터의 값을 'hehe'로 주면 다음 단계로 넘어갈 수 있다.

challenge 33-2

이번에는 POST 방식이다. POST 방식으로 'post'의 값과 'post2'의 값을 바꿔줘야 한다.

다음 단계 페이지를 알아냈다.

challenge33-3

* $_SERVER['REMOTE_ADDR']
현재 웹 페이지에 접속한 이용자의 IP 정보를 저장한다.

challenge33-4

힌트로 time() 반환 값을 출력해준다.

이 값에 한 15~20초 정도 더한 값에 대하여 md5 해시를 생성한 뒤, password값에 넣은 상태로 여러 번 새로고침하다보면 다음 단계로 넘어갈 수 있다.

challenge 33-5

GET 방식과 POST 방식으로 모두 변수 값을 각각 주고, Cookie 값도 모두 1로 설정하면 될 것 같다.

GET 방식과 POST 방식을 동시에 사용하는 것이 관건인 문제인 것 같다.

일단 문제 페이지를 프록시를 이용해 intercept 한 뒤, POST 방식으로 변환하여 impost=1과 imcookie=1 값을 추가해준다.

그리고 마지막에 변경사항을 보낼 때, 링크 뒷 부분에 GET 방식으로 ?imget=1 을 추가하면 된다.

challenge 33-6

cookie 값은 접속한 사용자의 IP 주소를 md5 암호화한 값을 넣어주면 되고, POST 방식으로 전달받는 kk 변수의 값은 HTTP_USER_AGENT의 값을 md5 암호화한 값을 전달하면 된다.

SERVER['HTTP_USER_AGENT']

웹 페이지에 접속한 사용자의 접속 환경에 대한 정보

challenge 33-7

이번에는 GET 방식으로 받아야하는 변수의 이름이 그 값과 동일해야 한다.

현재 접속한 사용자의 IP 주소에서 .을 없앤 뒤 입력하면 된다.

challenge 33-8

 

[PHP] extract 취약점

우선, extract함수는 인자로 전달받은 배열의 키 값들을 변수화하는 함수다.
인자로 $_GET 또는 $_POST를 주게 되면 해당 변수 값들을 overwrite할 수 있는 취약점이다.

따라서, 그냥 addr=127.0.0.1을 전달하면 해결된다.

challenge 33-9

for-loop의 내용을 python으로 작성해 answer값을 알아내보자!

answer = ""
for i in range(97, 123, 2):
    answer += chr(i)
print(answer)

challenge 33-10

드디어 마지막!

우선 $ip와 $answer 값을 알아내야 한다.

이제 answerip/{$answer}_{$ip}.php 파일에 접근해본다.

드디어 다 풀었다!

SMALL

'Web > Web Hacking (Wargame)' 카테고리의 다른 글

[webhacking.kr] old-19  (0) 2023.02.18
[webhacking.kr] old-18  (0) 2023.02.10
[Dreamhack] out of money  (0) 2023.02.04
[webhacking.kr] old-32  (0) 2023.02.03
[hackthissite/Javascript] Mission 1 ~ Mission 7  (1) 2023.01.30