반응형

SQL Truncation 문제를 풀어보도록 하겠습니다. SQL 절단?? 

 

문제에 들어가면 3개의 탭이 보이네요. 

HOME은 빈 화면이고, Register에선 사용자 등록, Administration은 관리자 로그인 기능이 존재하고 있습니다.

 

우선, Register 탭에서 관리자 USER 등록/생성을 시도해봅니다..

 

User already in DB라는 에러가 출력되며, admin 계정이 이미 존재함을 알 수 있습니다.

그래서, 등록이 불가능하죠.. 

 

SQL Truncation을 구글에 검색해보았더니, SQL Truncation Attack 이라는 공격기법이 존재하였습니다.

https://resources.infosecinstitute.com/sql-truncation-attack/#gref

 

SQL Truncation Attack

The SQL Truncation vulnerability is a very interesting flaw in the database. The successful exploitation of this issue leads to user account compromise,

resources.infosecinstitute.com

 

위의 링크에서 공격 원인과 기법을 파악해서 시도해보았습니다.

 

MySQL 데이터베이스가 기본 모드에서 실행 중이라면, Administrator 계정이 admin으로, 최대 문자열 길이는 20자로 제한된다고 합니다.

또한, MySQL 에서는 정의된 최대 문자열 길이보다 긴 경우엔 이후 문자열을 자르고 앞의 문자열만 받아들입니다.

따라서, 사용자 이름 길이가 20자로 제한된 상태에서 공격자가 20자 이상을 입력할 경우 새 사용자 이름을 승인하고 데이터베이스에 삽입하는 거죠. 

 

사용자 이름을 admin+(공백 15자)+임의 문자열을 입력하고, 원하는 패스워드 입력 후 등록 버튼을 클릭하면,

 

20자 이후의 문자열은 자르고, 새로운 유저로 받아들여 데이터베이스에 저장되었습니다.

즉, 이 테이블에는 'admin'과 'admin' 두 개의 관리자가 존재하는 거죠.

 

Administration 탭에서 본인이 입력한 패스워드를 입력하여 로그인 시도해봅니다.

 

정상적으로 관리자 권한 획득이 가능하고, Flag 값도 출력되었습니다.^^

반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] JSON Web Token (JWT) - Introduction  (0) 2019.12.20
[root-me] XPath injection - authentication  (0) 2019.07.25
[root-me] CRLF  (0) 2019.07.18
[root-me] Javascript - Obfuscation1  (0) 2019.04.15
[root-me] Javascript - Authentication2  (0) 2019.04.15

+ Recent posts

반응형
반응형