
webhacking.kr - old-05 풀이
O_o22
·2022. 9. 6. 23:20

5번 접속 시 위와 같은 사이트가 나온다.

join을 누르면 no() 함수를 실행하는데, no 함수는 그냥 Access_Denied만 뜬다.
그렇다면 login인데, mem/login.php 로 이동하는 것 같다.

이동을 했는데, 생각보다 url이 계속해서 디렉토링 되는 느낌이다.

아무것도 입력하지 않으면 반응이 없고, 아무거나 입력했더니 Wrong password 라고 한다.

한번 login.php가 속한 경로로 /mem 으로 이동했더니, 위와 같이 join.php도 있다고 한다.

하지만 join.php를 누르면 위처럼 alert가 뜨고

아무것도 없는 빈화면에 위와 같은 코드로 구성되어있다. 느낌상 글자별로 변수를 지정하고,
변수를 길게해서 코드를 표현한 것 같다.

한 번 엔터를 쳐보면서 코드를 정리해봤다.
이후 크롬 콘솔에 쳐보니

oldzombie 라고 하는 값이 나왔다.

다음 부분은 js 코드를 위에 써있는 변수처럼 작성해서 읽기 귀찮게 만든 것 같다.

하나하나 확인해보고, 이를 코드로 정리해보았다.
if(eval(document.cookie).indexOf(oldzombie)==-1) {alert('bye');throw "stop";}
if(eval(document.URL).indexOf(mode=1)==-1){alert('access_denied');throw "stop";}
else{document.write('<font size=2 color=white>Join</font><p>');
document.write('.<p>.<p>.<p>.<p>.<p>');
document.write('<form method=post action=join.php>');
document.write('<table border=1><tr><td>
<font color=gray>id</font>
</td><td>
<input type=text name=pw maxlength=20></td></tr>');
document.write('<tr><td><font color=gray>pass</font></td>
<td><input type=text name=pw></td></tr>');
document.write('<tr align=center><td colspan=2>
<input type=submit></td></tr></form></table>');}
이런 느낌이고, 만약 쿠키값에 oldzombie라는 문자열이 존재하지 않는다면, alert bye가 실행된다.
또한 url주소에 mode=1 이라는 문자열이 포함되지 않는 경우에는 alert access_denied가 실행된다.
아닌 경우 아래 끝까지의 코드가 실행된다.
즉 oldzombie 쿠키를 만들고, URL에는 mode=1이라는 것을 포함해보았다.



그랬더니 join.php 사이트에 뭔가 나타났다.


회원가입을 완료하고, 만든 계정으로 다시 login.php에서 로그인했다.

그런데 admin으로 로그인을 해야한다고 나온다.
다시 join.php에서 id를 admin으로 가입을 시도했다.


그런데 이미 존재하는 ID 였고, admin 앞에 공백을 추가해보았다.

이후 로그인하면,

'네트워크, 웹 (Network & Web) > Wargame' 카테고리의 다른 글
Dreamhack(Web) - php-1 (0) | 2022.10.04 |
---|---|
webhacking.kr - old-06 풀이 (0) | 2022.10.03 |
webhacking.kr - old-04 풀이 (0) | 2022.09.05 |
webhacking.kr - old-03 풀이 (0) | 2022.09.05 |
webhacking.kr - old-02 풀이 (0) | 2022.09.04 |