Hacking/[Web]DreamHack

DreamHack [simple_sqli]

양선규 2023. 3. 8. 03:31
728x90
반응형

기초적인 SQLi(SQL Injection) 공격 실습이다.

해결 방법으로는 인증우회 ,그리고 Blind SQLi 를 이용한 패스워드 획득 후 정상 로그인. 두가지 방법이 있다.

 

문제 메인페이지

 

해당 문제의 메인페이지이다.

심플하게 Login 페이지만 존재한다.

 

 

Login페이지이다.

해당 문제 DB엔 guest, admin 계정이 있는데

admin계정으로 로그인에 성공하면 FLAG를 획득할 수 있다.

 

우회 구문은

=======================================================

userid : admin" --

password : 아무거나

 

userid : admin" or "1

password : 아무거나

=======================================================

등등이 존재한다. 우회구문은 다양하게 존재할 수 있다.

 

 

로그인 폼에 적용되어있는 SQL쿼리문은 아래와 같다.

=======================================================

SELECT * FROM users WHERE userid="{userid}" AND userpassword="{userpassword}";

=======================================================

우리가 입력한 값은 각각 {userid} , {userpassword} 부분에 들어가게 된다.

 

 

 

첫번째 우회구문 입력

 

만약 첫번째 우회 구문을 입력하면 쿼리는

SELECT * FROM users WHERE userid="admin" --" AND userpassword="아무거나";

이렇게 되며, --(주석) 이후값은 없는 값 처리되어, userid="admin" 값만을 만족하는 결과를 불러오게 되어

admin 계정으로 로그인에 성공할 수 있다.

 

admin 로그인 성공

 

인증우회에 성공하여 admin 계정으로 로그인되었다.

따라서 FLAG가 출력된 모습이다.

 

 

Blind SQL Injection 방식으로, 쿼리에 대한 참/거짓반응을 보고 패스워드를 알아내는 방법도 있다.

다만 그 방법은,

패스워드의 첫글자가 a 인가? -> 예/아니오 

이런 식의 쿼리를 매우 많이 반복해서 얻는 노가다 작업이기 때문에 자동화된 스크립트를 사용하는게 바람직하다.

728x90
반응형

'Hacking > [Web]DreamHack' 카테고리의 다른 글

DreamHack [CSRF-2]  (0) 2023.03.07
DreamHack [xss-2]  (0) 2022.09.05
DreamHack [xss-1]  (0) 2022.08.04