이번 문제는 푸는데 여러 방법이 있어서 모든 풀이를 포스팅해보고자 한다.

admin 계정으로 로그인하는 문제이다.

로그인을 할 수 있는 페이지이다 기존에 주어진 계정과 잘못된 계정으로 로그인을 해보자


문제에 주어진 계정을 이용해 로그인 성공 시 result: ok를 반환하고 실패 시 fail를 반환하는 걸 알 수 있다.

아이디를 admin으로 바꾼 후 Do intercept를 이용해 response를 잡아준다.

원래 대로라면 잘못된 정보라 fail이 뜨지만 Do intercept를 이용해 response를 수정할 수 있기 때문에 fail를 ok로 수정해 줬다.

history를 확인해 보면 flag가 나와 있는 걸 볼 수 있다.
기존이랑 똑같은 방식으로 진행을 하면 history에서는 flag를 확인할 수 있지만 웹사이트를 확인해 보면 다시 login.php로 리다이렉트가 된다. 그래서 flag가 있는 history를 살펴봤다.

맨 윗줄을 살펴보면 location.href='login.php'이라는 코드가 있기 때문에 성공을 해도 웹사이트에서는 flag를 출력하지 않고 login.php 리다이렉트가 된 것이다. 저 코드를 지우고 forward를 해주면

웹사이트에서도 flag가 출력되는 걸 볼 수 있다.

로그인 화면에서 id = amdin password = 아무거나 입력해 준 뒤 개발자 도구에서 login.js에서 if 구문을 주석 처리 후 location.href = "index.php"를 입력 후 sign in 버튼을 누르고 burp suite에서 history를 확인해 보면

기존과 같이 flag를 획득할 수 있다.

풀이 [3]과 같은 조건에서 resultData를 fail로 바꿔준 뒤 로그인을 해준 후 history를 확인해 보면

flag를 획득할 수 있다.

풀이 [3], [4]와 같은 조건에서 else 구문에 location.href = "index.php" 추가 후 로그인 history 확인

flag를 획득할 수 있다.