WebGoat

WebGoat (2)

홍시뗄레 2025. 3. 10. 23:54

Injection이란 무엇인가?

공격 구문을 주입해서 악의적인 행동을 한다. 어떤 것을 넣는지에 따라 취약점 종류가 달라진다. 이중에서 제일 유명한 injection은 sql injection이다. os command injection도 있다. 가장 critical하지만, 시스템 명령어를 실행하는 기능이 많지 않아서 취약점이 발생할 확률이 낮은 편이다. 

SQL Injection이란 무엇인가?

sql: 구조화된 질의 언어. 

단일 라인으로 끝난다. 명령어 개념이라고 생각하면 편하다. 

insert, select, 등등.. 구문이 길어질 순 있지만 데이터베이스의 데이터를 제어하기 위해 사용된다. 

 

사용자가 입력할 수 있는 파라미터 값에서 sql injection 공격이 나타날 수 있다.

?idx=100을 입력할 수 있다. (예를 들어)

사용자에게 100번째 게시글을 전달해주어야 하는데, DB로 연결된다. 대부분, 거의 100% db에 저장해두고 사용자에게 100번째 게시글을 반환한다. 공격자는 여기서 비정상적인 입력값을 넣는다. sql 구문을 입력하는 등의 예가 있다. 

공격자가 의도한 형태로 sql 구문을 질의하게 된다. 변조된 select문으로 요청이 간다.

 

예제

select * from member where id='admin' and pw='test'

이런 식으로 입력해야 로그인이 되는데, 만약에 

select * from member where id='admin' or '1'='1' and pw='test'

이렇게 하면 문장 전체가 참이 돼서 admin 계정으로 로그인이 된다. 아니면 주석처리를 해서 비정상적인 행위로 공격을 할 수 있다. 

 

어떤 행위를 할 수 있을까?

1. 인증 우회

2. 데이터 조회 공격 (조작) 

3. 시스템 명령어 실행 

 

((3번은 가끔 일어난다))

 

'WebGoat' 카테고리의 다른 글

WebGoat (6)  (0) 2025.03.18
WebGoat (5)  (0) 2025.03.17
WebGoat (4)  (0) 2025.03.17
WebGoat (3)  (0) 2025.03.12
WebGoat(1)  (0) 2025.03.10