티스토리 뷰
소스코드가 나와있으므로 소스코드를 우선 확인해 보았다.
핵심 PHP 코드를 변수명만 바꿔 보았다.
코드를 살펴보면 COOKIE에서 c라는 이름을 가진놈의 value를 $a에 저장하고,
GET 파라미터로 넘어온 g라는 이름을 가진놈의 value를 $b에 저장하고,
POST 파라미터로 넘어온 p라는 이름을 가진놈의 value를 $c에 저장하고,
$b . $a 를 통해 하나로 이어서 $d에 저장.
$c를 $e에 저장. 함으로써 준비를 마친다.
test함수를 살펴보면 각문자를 ASCII Code로 바꾼 뒤 사이사이에 - 문자를 넣은 문자열로 리턴해준다. 즉 비교 구문에 있는 문자열은 해당 ASCII Code로 다시 변경한 뒤 비교해주면 될 것 같다.
변경해보니
$d == 'givemepassword' || $e == 'keyplz!'
라는 수식이 완성되었다 !
즉, 이번문제 해결을 위한 목표 !
http://xcz.kr/START/prob/prob18.php 의 Cookie에 'c':'password' 넣기 !
http://xcz.kr/START/prob/prob18.php 의 GET 파라미터로 'g'='giveme' 넘겨주기 !
http://xcz.kr/START/prob/prob18.php 의 POST 파라미터로 'p'='keyplz!' 넘겨주기 !
Solution 1.
Browser의 Console을 통해 JavaScript 코드를 넘겨주어 실행.
위 코드를 해당 페이지 콘솔창에 넣게 되면 !!
짜짠~~ 이런 페이지가 등장하게 된다.
여기서 submit 버튼을 누르게되면 post 형태로 action을 취하게 된다.
이 때 URL에 파라미터 g를 넣어주고, input 태그를 이용해 파라미터 p를 넣어주게 되면된다.
그리고 마무리로 쿠키는 EditThisCookie 라는 Chrome 확장 프로그램을 통해 추가해 줬다.
물론 document.cookie = 'c=password;' 를 통해 콘솔창에서 추가해줄 수도 있다.
Solution 2.
Python 코드를 작성해 실행.
파이썬 코드로 작성하면 비교적 쉽게 작성할 수 있다.
코드에 보이는 그대로다. 기본적으로 POST 기반으로 request를 보내며 URL에 GET 파라미터를 추가한 형태로 진행하였다. 쿠키도 물론 같이 전달하였다.
아래코드를 긁어서 html에 띄워봐도 되고, 아니면 그냥 눈으로 Key를 찾아도된다.
복잡해질때는 반복문을 통해 원하는 키워드를 찾을 수 있을 것 같다.
Solution 3.
Proxy 도구 (Fiddler)를 사용해 실행.
넘어가는 Request를 잡아서 Params 탭에 내가 원하는 인자들을 전부 추가한다.
그런데 이상하게도 결과페이지가 넘어오지 않는다...ㅠㅠ 왜그럴까
'Web > Wargame' 카테고리의 다른 글
[Dreamhack] spring-view Writeup (0) | 2021.01.17 |
---|---|
[SuNiNaTaS] 2번 (Web) - JavaScript 검증 ByPass (0) | 2019.07.02 |