인가 취약점 ctf

이정민·2024년 2월 21일

웹 해킹 공부 정리

목록 보기
18/18

인가 취약점에 대한 ctf 문제를 풀어보겠습니다.

authorization1

아이디와 비밀번호가 주어지고, 미사일 발사 버튼을 클릭하면 되는 예제입니다.

버튼을 클릭해야되는데 버튼이 없습니다. 이상하니 히스토리 부분을 찾아보겠습니다.

버튼 부분이 주석처리되서 보이지 않는 거였습니다. 응답을 가로채서 주석을 지워보겠습니다.

정상적으로 버튼이 보이고 버튼을 누르면

성공적으로 flag를 얻을 수 있습니다. 위 문제는 주석처리를 통해 인가처리를 한 경우였습니다.

authorization2

1번 문제와 같은 조건이 주어진 문제입니다.

로그인 해보니 1번과는 다르게 버튼이 그대로 보이는 모습입니다.

버튼을 눌러보니 권한이 없다고 나오는 모습입니다. 버프 스위트로 자세히 살펴보겠습니다.

버튼 부분에 onclick 메소드로 goMenu라는 함수가 눈에 띄는 모습입니다. 하지만 index.php 어디를 살펴봐도 goMenu라는 함수는 선언이 되지 않았습니다.

하지만 자바스크립트 파일을 불러온 부분이 눈에 띄었고, user.js와 game.js 파일을 살펴봐야할 필요성이 느껴졌습니다.

game.js 파일에는 goMenu가 없었지만 user.js 파일을 살펴보니 발사 버튼에 있던 1018이 적힌 case가 있었습니다. if문이 참이면 fire_nuclear_Attack.php로 보내주는 코드가 보입니다.

해당 url로 직접접근해보니 성공적으로 flag를 얻었습니다.

authorization3

3번 문제도 1, 2번과 조건이 같습니다.

2번과 같이 버튼은 있지만 권한이 없습니다.

자세히 살펴보니 2번 문제와 비슷합니다.

함수를 살펴봤더니 2번 문제와 크게 다르지 않지만 이번에는 안쪽 url 부분이 난독화 되어있습니다. 이대로는 직접접근은 어려워보입니다. 코드를 더 자세히 살펴보겠습니다.

버튼에 들어간 9999번 케이스일 때는 user-auth-check라는 함수를 다시 불러옵니다. 이 함수는 2개의 파라미터를 받아서 서로 같으면 참인 함수인데 기본적으로 'admin'이 들어가고 나머지 하나인 userLevel은 기본적으로 응답페이지에서 넣지 않고 응답하는 것을 볼 수 있습니다.

응답 페이지를 인터셉트해서 파라미터에 admin을 넣으면 user-auth-check 부분에 'admin'=='admin'이니 참이 나올 것이라고 생각해서 이대로 시도해봤습니다.

화면이 아까랑 다르지 않아서 당황했지만

버튼을 눌러보니 성공적으로 flag를 얻었습니다.

authorization4

4번 문제는 게시판에서 관리자만 작성할 수 있는 공지사항을 작성하는 문제였습니다.

게시판은 이런 모습이었고

공지사항을 눌렀을 때는 이런 모습이었습니다.

페이지를 살펴보다보니 공지사항을 읽는 페이지에서 writeBtn이라는 부분을 발견했습니다. 물론 정말 글을 작성하는 부분이 아니라 공지사항으로 돌아가는 부분이긴 했지만 저기에 write라는 부분을 보니 url을 다시 살펴보게 되었습니다. 공지사항 리스트 부분의 주소는 notice_list.php, 공지사항을 보는 부분의 주소는 notice_read.php였고, 버튼의 class가 writeBtn이어서 notice_write.php로 직접접근해봤습니다.

성공적으로 글 작성 페이지에 접근할 수 있었고, create 버튼을 누르니

flag를 얻을 수 있었습니다.

profile
공부중

0개의 댓글