정보보안/정보보안 실습

[정보보안] Login SQL Injection 실습

Developer D 2023. 6. 26. 16:06

2020.09.20 - [정보보안/정보보안 실습] - [정보보안] Login SQL Injection 실습

 

[정보보안] Login SQL Injection 실습

모의 해킹 관련 게시글은 학습활동으로 실습, 작성되었습니다. 실습환경은 모의로 구축한 것이므로 실제로 해킹을 시도할 시 법적 처벌을 받을 수 있습니다. 실습용으로 구축된 취약한 사이트

silver-liq9118.tistory.com

약 3년전 실습은 "모의해킹"을 위해 만들어진 페이지에서 진행되었다.

 

현재 실습은 모의해킹을 위해 본인이 작성한 웹페이지에서 진행되었으며

"실습용으로 구축된 취약한 사이트에 대해 진행 되었으며, 실제 사이트에서 SQL Injection으로 해킹을 시도하는 것은 불법 행위입니다."

 

https://github.com/silver-liq9118/php_website_basic

해당사이트를 직접 서버를 올려 진행하였다.

 

GitHub - silver-liq9118/php_website_basic: PHP Web site basic, just login and sign up

PHP Web site basic, just login and sign up. Contribute to silver-liq9118/php_website_basic development by creating an account on GitHub.

github.com

 

 

1. 로그인 화면에서 고의의 에러 발생시키기

로그인 화면에서 임의의 SQL을 입력하여 에러를 발생시켜 DB정보를 탈취한다.

ID : 1'  or 1 = 1

→ 1=1 이라는 항상 참이 되는 값을 이용하여 ID를 우회한다.

PWD : asd (임의의값)

  임의의 값을 이용하여 데이터베이스 오류를 유도 했다.

해당 서비스는 MariaDB Server를 사용함을 알 수 있다.

mysqli->query 구간과 snytax to use near "AND password=''' 를 통해

ID PWD서비스에서 SELECT email, password from (테이블)  where email = email and password and password 을 사용하고 있음을 추측할 수 있다.

 

ID:ID : 1'  or 1 = 1#

PWD : asd (임의의값)

을 통해 # 뒤에오는 구문을 모두 주석처리하여 SELECT email, password from (테이블)  email = 1' or 1= 1 # password = password를 통해 password값은 모두 무시되고 1or1 값에 의해 이 SQL 쿼리는 항상  참이 된다.

로그인 우회 성공

서비스에서 ID,PWD입력값 검증을 하지 않았기 때문에 SQL Injection으로 로그인 인증을 우회 할 수 있다.

 

 

반응형