Yozzang의 해킹일기 💻
article thumbnail
728x90

오늘은 DreamHacker의 웹 해킹 워게임 중 하나인 session을 함께 풀어볼 예정입니다.

 

 

 

session

쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. Reference Background: Cookie & Session

dreamhack.io

문제 정보를 살펴보면 해당 문제는 쿠키와 세션을 이용하여 admin 계정으로 로그인하면 성공한다고 합니다.

 

워게임에 사이트에 접속해 보면 아래와 같은 페이지가 로딩될 겁니다.

index

사이트를 살펴보면 Home, About, Login 이렇게 총 3개의 링크가 존재한다는 것을 확인할 수 있습니다.

 

About 링크를 클릭해보면 다음과 같이 아무런 변화가 없다는 것을 확인할 수 있습니다.

about

Login 링크를 클릭해보면 다음과 같이 우리가 흔히 알고 있는 로그인 페이지가 로딩됩니다.

login

그럼 이어서 소스코드를 분석해보도록 하겠습니다.

11 ~ 15

11~15번째 줄을 보면 우리는 3개의 계정이 존재한다는 사실을 알 수 있고 그 중 admin 계정의 비밀번호가 FLAG인 것을 알 수 있습니다.

 

20 ~ 28

20~28번째 줄은 index.html에 관한 소스코드입니다. 28번째 줄을 보면 우리는 admin으로 로그인 해야지 flag값을 알 수 있다는 것을 알 수 있습니다.

30 ~ 47

30~47번째 줄은 login.html에 관한 소스코드입니다. 우리가 입력한 아이디와 비밀번호는 각가 'username'과 'password'에 저장됩니다. 그리고 pw변수를 통해 해당 username이 실존하는 user인지 확인합니다.

 

이어서 보겠습니다.

49 ~ 53

51번째 줄을 보면 os.urandom(1).hex() 함수를 통해 무작위 1바이트의 hex값을 생성하여, 그걸 admin의 세션값으로 설정한다고 나와있습니다. 즉, admin = hex값입니다. 따라서 우리는 이 hex값을 알아내면 28번째 코드를 만족시켜서 FLAG값을 알아낼 수 있습니다.

 

이번 공격은 해킹 툴인 Burp Suite를 활용하여 진행해보겠습니다.

 

Burp Suite는 아래의 링크에 들어가서 다운로드할 수 있습니다.

 

 

Download Burp Suite Community Edition - PortSwigger

Burp Suite Community Edition is PortSwigger's essential manual toolkit for learning about web security testing. Free download.

portswigger.net

 

Burp Suite를 다운로드하여 실행하면 아래와 같은 메인화면이 나올 겁니다. Burp Suite의 보다 자세한 사용법은 훗날 따로 포스팅을 작성해서 설명하도록 하겠습니다.

Proxy - Open Browser - 워게임 사이트 입력하기를 차례대로 진행하면 다음과 같은 화면이 나옵니다.

코드 아무 부분에다가 마우스 우클릭하여 Send to Intruder를 선택하고 상단 바의 Intruder에 들어가면 다음과 같은 화면이 나옵니다.

여기서 Payloads를 클릭하여 아래와 같이 설정하고 Start attack 버튼을 클릭합니다.

Payload type: Brute forcer

Character set: abcde0123456789

Min length: 2

Max length: 2

그럼 아래와 같이 공격이 진행되는 것을 확인할 수 있으며, Length가 나머지와 다른 하나를 찾으면 됩니다.

여기서 잠시 Brute force에 대해서 간단히 설명하자면, Brute force란 무차별 대입 공격입니다. 랜덤의 값을 대입하여 암호를 알아내는 해킹 기법입니다. 그럼 공격이 완료되고 나서 다시 워게임 사이트에 들어가면 아래와 같이 FLAG가 출력된 것을 확인할 수 있습니다.

profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!