상세 컨텐츠

본문 제목

Segfault CTF - (5주 차) Secret Login

컴퓨터/보안 - CTF문제

by 디멘터 2024. 5. 21. 07:39

본문

※ 주의 : 보안 관련 학습은 자유이지만, 학습 내용을 사용한 경우 법적 책임은 행위자에게 있습니다.
(Note: Security-related learning is allowed, but the individual is solely responsible for any legal consequences arising from the use of the acquired knowledge.)

※ CTF - Capture The Flag

※ 문제 푸는 방법이 다양할 수도 있습니다.


SegFault CTF - Secret Login

1. 주어진 정보 : 계정 하나 (ID / PW : doldol / dol1234), 목표는 관리자 계정으로 로그인인데 관리자 계정을 모른다..!

 

 

2. 정상 로그인해서 과정 살펴보기.

→ Burp Suite로 보았으나 특별한 점은 보이지 않았다.

 

2. 방법 구상하기

SQL injection 시도

ID입력란에 doldol'# PW입력란에 1 로그인이 된다.

식별 인증 동시인 것 같고 ID만 알면 로그인이 가능하다. 

→ 하지만 ID를 모른다.

→ 무차별은 아니고.. 반차별(?) 대입을 해본다.

→ ID입력란에 1' or id like 'a%'# PW는 아무거나.. 1 입력한다.

→ a에 a부터 z까지, 그리고 0부터 9까지 해본다.

→ (아마 설정된 데이터 셋이 대소문자를 구분하지 않는 것 같다.)

bello도 있고
mario도 있고..

 

flag도 있고..

 

→ id는 5로 시작하는 것 같다. 1' or id like '5%'#

 

4.성공

 

5.값 알아내기

 

 

like를 써서 5로 시작하는 14자리 id인 걸 알아냈다.

→ 약간의 노가다로 알아낸 관리자 ID는 5ecret_acc0unt 이다.

 

→ 비밀번호를 알아보자

→ 알아보기전 SQL inject으로 테이블 구조를 한 번 더 확인해준다.

→ ID입력란에 doldol' and pass='dol1234'#를 입력하고 PW에 1를 넣으면 로그인이 된다.

ID입력란에 doldol' and pass='1'#을 입력하고 PW에 1을 넣으면 로그인이 안된다.

→ and가 먹히고, 컬럼에 pass가 존재한다.

→ 무적의 like를 써준다. 5ecret_acc0unt' and pass like '%'# PW에 아무거나 입력해도 로그인이 된다.

→ 시간을 아끼고자 5ecret_acc0unt' and pass like '_________________'# 로 17자 인것을 알아내고

시간을 아끼고자 5ecret_acc0unt' and pass like '%a%'# 로 들어가는 문자를 찾는다.

→ e,f,g,h,i,j,k,q,w,3,8이 들어가는 것을 알아 냈다.

 

→ 해보니 PW는 gjijfweijfiqwh38h이다.

관리자 계정으로 로그인 한다.
플래그를 획득한다.

 

6.다른 방법 생각해보기

SQL 인젝션이 통하고, PW는 몰라도 되니까, 모든 ID리스트에서 하나하나 대입해보면 될 것 같다.

id를 or true를 사용해 모든 튜플을 가져오고, SQL 끝단에 limit 1 offset 0#을 넣어서 오프셋을 하나씩 늘려주면 될 것이다.

관련글 더보기