본문 바로가기

[Wargame Write-up]/WebGoat

[WebGoat] [Injection Flaws] String SQL Injection

보통 SQL Injection이라고 하면, 이 공격에 해당한다.


이번에도 모든 신용카드 번호가 보이도록 만들라고 하고 있다.




주어진 Smith로 질의하면, 다음과 같이 Smith가 가진 정보를 보여준다.




' or 1=1--를 주면,


SELECT * FROM user_data WHERE last_name = '' or 1=1-- 이라는 쿼리가 만들어진다.


last_name = ''은 거짓이지만, 1=1이 참이며 or로 묶여 있어 전체적으로 참이 되게 된다.


그리고 --라는 ORACLE DBMS의 주석을 달아줌으로써 뒤에 나오는 문장을 무시한다.


즉, SELECT * FROM user_data를 한 셈이 된다.




이대로 질의를 던지면, 모든 이들의 카드 정보를 조회할 수 있다.