✏️ 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 파일에 접근해본다.
드디어 다 풀었다!
'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 |