문제 종류 - Web
사용한 툴 - EditThisCookie
풀이
문제에 들어가면 로그인 화면이 나타난다.
아무 ID, PW를 입력하고 로그인해보자.
접속하면 1번부터 10번까지 링크(?)가 있는데 전부 눌러본 결과는 다음과 같다.
Slow and steady win the race.
Everything will be done if you try hard.
Success doesn't come overnight.
Slow to resolute, but in performance quick.
If the wind will not serve, take to the oars.
Opportunity seldom knocks twice.
No sweat, no sweet.
Let your nose go in front, but don't always follow it.
For having loved and lost, you are a richer person.
If you don't walk today, you will have to run tomorrow.
세로로 읽으면 Session LFI이다. 1번 링크를 눌러보면 다음과 같은 URL을 지니고있다.
?page=1.say 부분을 이용하여 LFI 공격을 시도할 수 있을 것 같다.
개발자 도구에서 소스 코드를 확인하면 phpinfo를 확인해보라는 힌트가 나와있다.
phpinfo로 들어가 session에 관련된 정보를 얻어보자.
sessoin.save_path가 no value이므로, session.save_path는 default 값을 갖게 된다.
PHP session.save_path의 default path는 어디일까?
default이면 /tmp 밑에 sess_SESSION 형태로 존재한다.
이 점을 기억하면서, 다시 로그인 화면으로 이동해보자.
ID 부분에 <?php system("ls -al"); ?>를 입력하고 로그인해보자. PW에는 아무거나 입력해도 O
이제 URL을 다음과 같이 수정해준다. SESSION 값은 각자마다 다르다.
URL: http://ctf.j0n9hyun.xyz:2036/index.php?page=../../../../../tmp/sess_514081fcefd530c3d7d9875f802e83b2say
또한, EditThisCookie를 이용하여 Session 값 뒤에 say를 붙여줘야 한다. URL을 함부로 수정하면 Fuck Hack이라는 경고 문구가 뜨면서 쿼리를 거부하기 때문에... 보내는 쿼리 값 뒤에는 꼭 say를 붙여줘야 하기 때문이다.
쿼리에 성공했으면 다음과 같은 출력 값이 나타난다.
다시 로그인 화면으로 돌아가 id 부분을 <?php system("cat f14g__NGA); ?>로 수정하고 로그인해보자.
그 후, 다시 쿼리를 보내면 flag를 얻을 수 있다.
'Wargame > HackCTF' 카테고리의 다른 글
[HackCTF] Smooth CipherText 풀이 (100p) (0) | 2020.07.12 |
---|---|
[HackCTF] Great Binary 풀이 (50p) (0) | 2020.07.12 |
[HackCTF] Authenticate 풀이 (350p) (0) | 2020.07.11 |
[HackCTF] LOL 풀이 (300p) (0) | 2020.05.28 |
[HackCTF] Cookie 풀이 (300p) (0) | 2020.05.27 |