
위 코드를 보고 /user/register에서 계정을 생성할 수 있다는 것을 알 수 있다. 그런데 POST 방식을 사용하므로 curl을 이용해 계정을 생성해보도록 하겠다.

curl --proxy 127.0.0.1:8080 -X POST "http://host8.dreamhack.games:22496/user/register" -H "Content-Type: application/json" -d '{"username":"dolephine","password":"dolephine123"}'
위와 같이 dolephine/dolephine123 계정을 생성하기 위해 요청을 보내봤다. 그리고 성공적으로 계정이 생성됐다는 응답을 받았다.


이어서 로그인 기능까지 테스트를 해본다.


그리고 소스 코드를 보다가 의아했던 부분을 한 번 시도를 해봤다. 이미 API-Key를 sql 파일로 다 제공을 했으니 이것으로 바로 명령어를 실행할 수도 있지 않을까? 라는 생각이었다.


당연하겠지만 역시 로그인을 먼저 해야하는 것이다.
그래서 admin의 해시값을 rockyou.txt를 해시한 것으로 찾아보려 했지만, 나오지 않았다.
이번엔 admin의 API-Key에 집중하기로 했다.
소스 코드를 보면 /admin/search는 API-Key의 끝부분이 일치하면 참이 되므로, API-Key를 한 글자 씩 추출이 가능하다.

그러나 계정 생성 제한과 /admin/search 애플리케이션 사용 횟수 제한이 설정되어 있었다.


그래서 횟수 제한에 걸릴 때마다 재요청을 하면서 하나씩 ADMIN의 API-Key를 추출해나갔다.







이렇게 해서 최종적으로 ADMIN 권한의 API-Key를 얻는데 성공했다.
id 명령어를 실행하면 아래와 같이 시스템 root의 권한 정보를 출력해준다.

cat /flag로 플래그를 출력한다.

개인적으로 완전 노가다로 풀어서 정말 쉽지 않았다.
