R's Hacking Daily Log

SQLi (2) & Lab 본문

Port Swigger/SQL Injection

SQLi (2) & Lab

hanhxx 2023. 4. 27. 12:29

SQLi과 관련하여 살펴볼 두 번째 case는

"Subverting application logic"이다.

 

:) application의 로직대로 따르지 않을 테야!! 라는 느낌이다. 

:) 이해를 돕기 위해 사용자의 username & password로 로그인을 하는 application이 있다고 상상해 보자.

 

 

wiener이라는 계정을 로그인하기 위해 사용자는 username & password를 입력했다.

SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'

서버는 사용자의 input 값을 가지고 DB에

username은 wiener이고 password는 bluecheese인 user 내용을 확인해 볼 것이다. 

 

 

이 결과를 토대로 사용자는 로그인이 되거나 안 되거나. 여부가 판가름 날 것이다.

이런 상황에서 공격자는 password를 모르지만 임의의 계정으로 로그인을 하고 싶어 한다고 가정해 보자.

 

 

공격자는 아마도 다음과 같은 query를 만들 수 있을 것이다.

SELECT * FROM users WHERE username = 'wiener'--' AND password = 'idontknow'

-- (double dash)를 사용해 password 부분은 주석처리 되도록 하고 wiener이라는 값을 username input으로 사용했다. 

이렇게 되면 비밀번호를 모르더라도 wiener이라는 계정이 존재한다면 성공적으로 로그인을 할 수 있게 된다.

 

 

같은 원리로 공격자가 administrator 계정으로 로그인을 하고 싶다고 한다면 

SELECT * FROM users WHERE username = 'administrator'--' AND password = ''

username input으로 들어가는 값을 administrator'--로 입력하면 password가 무엇이든 간에 administrator 계정으로 로그인할 수 있다. 

 


[Subverting application logic - Lab]

 

이번 lab의 목적은

administrator user로 로그인하는 것이다!!

 

 

lab에 들어가면 My account 버튼을 볼 수 있다.

 

 

클릭해 보니 login form이 하나 보인다. 

username = 'administrator'--'로 input이 들어갈 수 있게 값을 넣어주고 password는 아무거나 입력해 준다.

(어차피 주석 처리될 것이기 때문에)

 

 

Enter를 눌러주면 성공적으로 sql injection이 실행된 걸 볼 수 있다.

'Port Swigger > SQL Injection' 카테고리의 다른 글

SQLi (4)  (0) 2023.04.28
SQLi (3) - Lab  (0) 2023.04.28
SQLi (3)  (0) 2023.04.27
SQLi (1) - Lab  (0) 2023.04.26
SQLi (1)  (0) 2023.04.26
Comments