[Webhacking.kr] Old-60
문제에 접속하면 idx가 나오고 소스코드가 주어진다.
소스를 분석해본 결과, PHPSESSID쿠키 값이 숫자로 이루어 져야한다.
이런식으로 되어있는 값을 123등으로 바꿔준다. 세션아이디가 바뀌었기 떄문에 다시 로그인 하라고 떠서 다시 로그인 해준다.
https://webhacking.kr/challenge/web-37/?mode=auth
이렇게 mode라는 인자를 auth로 설정해주면 분기문을 타고 내려가서 ./readme/$_SESSION["idx"].txt를 열고 그 안의 내용이 $_SESSION["idx"]이면 풀리는 문제이다.
분기문을 빠져나온 뒤에는 우리가 도달해야하는 ./readme/$_SESSION["idx"].txt를 열고 그 안의 내용을 $_SESSION["idx"] 쓰는 부분이있다.
마지막 분기문에서 접속하고 있는 주소가 127.0.0.1이 아니면 만든 파일을 지워버린다.
따라서 접속하는 주소를 127.0.0.1로 조작을 하는 방법을 생각해볼 수 있었다.
하지만 검색을 해본 결과 불가능 하다고...
여러번 문제를 접속해보았는데 처음에 echo되는 idx값은 고정인거 같았다. 그리고 소스를 잘 들여다 보면, sleep(1)이 여러개 있는 것을 발견할 수 있는데, sleep은 레이스컨디션을 유발할 수 있는 함수라는 사실..!
만약 파일을 만들고 지우기전에 다른 세션으로 접속을 한다면, 아마 문제는 풀릴 것이다.
그래서 크롬과 파이어 폭스 두개를 켜놓고(크롬 두 창으로 해도 될거같긴하다.) 세션쿠키를 다르게 설정한 뒤, 두개를 약간의 시간차를 두고 새로고침 해보았다.
해-결
'Web Hacking' 카테고리의 다른 글
[Webhacking.kr] Old-10 (0) | 2020.01.04 |
---|---|
[Webhacking.kr] Old-32 (0) | 2020.01.03 |
[Webhacking.kr] Old-20 (0) | 2020.01.02 |