Web Hacking/DreamHack
드림핵 phpmyRedis 문제
프레딕
2023. 11. 24. 22:11
728x90
이 문제를 풀기 위해 알아야 할 점은 다음과 같다.
- redis는 명령어를 이용해 메모리 데이터를 저장하는 파일의 저장 주기를 지정 가능하다.
- 저장되는 파일의 경로와 이름, 그리고 데이터도 함꼐 설정 가능하다.
- eval 명령어를 통해 lua 스크립트를 실행 시킬 수 있다.
먼저 데이터 저장이 되는 파일을 알기 위해 config.php에서 dir을 get해보면
{"dir":"\/var\/www\/html"}
임을 알 수 있다. html 경로에 있으니 냅두고 dbfilename을 redis.php로 set해준다.
그 후 데이터 저장 주기도 설정해줘야 하는데 계속 저장되는게 좋으니 save 60 0 으로 set해준다. (60초 이내에 0개 이상 데이터가 변경되면 저장한다.)
그 후 redis.php에 셸 스크립트 삽입을 위해 lua 스크립트를 실행시킨다.
(아래 eval을 이용한 lua스크립트 참고)
https://docs.w3cub.com/redis/eval
이렇게 하면 redis.php에 셸 스크립트가 삽입이 되었다.
다음으론 flag를 찾아야 하는데 dockerfile을 보면 /flag에 있다고 되어있다.
http://host3.dreamhack.games:포트번호/redis.php?cmd=/flag 이렇게 주소를 치고 들어가면 flag를 획득 할 수 있다.
728x90
반응형