Wargame/웹해킹(Webhacking.kr)








Copyright 使 2008 beistlab. All rights reserved



문제다.


무언가 굉장히 어렵다.;;


어드민 페이지를 찾아내고.. 보드(게시판)에 수상한 글이 있는건 알았지만;; ㅠ;


풀이 페이지

http://dosnipe.tistory.com/67

http://blog.hax0r.info/entry/%ED%92%80%EC%9D%B4-%EC%98%AC%EB%93%9C%EC%A2%80%EB%B9%84%EB%8B%98%EC%9D%98-Webhackingkr-2%EB%B2%88-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4

https://blog.naver.com/PostView.nhn?blogId=sbd38&logNo=220242365752&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글

[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03
[Webhacking.kr] 1번 index.phps  (0) 2017.08.31
[Webhacking.kr] 00. 가입  (0) 2017.08.31

[Webhacking.kr] 1번 index.phps

2017. 8. 31. 23:32

1번 문제다. 정말 아무것도 안적혀있다;


---------------------


level : 1

----- index.phps ----- 


위에 보이는 저게 다다;

index.phps에서 phps란 PHP Source의 약자로 php로 되어있는 확장자를 phps로 바꾸어 요청하면, 일부 설정을 잘못한 페이지들은 소스가 그대로 노출된다.


그러므로 http://webhacking.kr/challenge/web/web-01/index.php에 index.phps로 바꾸어서 요청하면 소스코드가 그대로 보여진다.

문제페이지에서 오른쪽클릭으로 보는 소스보기와는 완전히 다른.. php소스까지 다 보여지기 때문에, 웹 개발자 입장에서는 저런 실수를 한다면 꽤나 치명적일것이라고 본다.


근데 웃긴건.. 이게 개발자의 실수가 아니란점(아니 실수일수도 있겠다. 편의를 위해 만들어놓은 기능을 안지워서 생긴것일수있으니)



어쨋든, index.phps로 해서 들어가면 소스를 볼수 있다.


<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<br>level : 1<br>
<pre>
<a onclick=location.href='index.phps'>----- index.phps -----</a>
</body>
</html>

그냥 소스보기로 보면 <a onclick=location.href='index.phps'>----- index.phps -----</a> 를 발견할수 있다.
클릭하면 알아서 index.phps로 이동하므로 바로 소스 전체를 볼 수 잇다.


위와 같은 소스 코드이다.
<?
if(!$_COOKIE[user_lv])
{
SetCookie("user_lv","1");
echo("<meta http-equiv=refresh content=0>");
}
?>
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<?
$password="????";
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>5) @solve();
echo("<br>level : $_COOKIE[user_lv]");
?>
<br>
<pre>
<a onclick=location.href='index.phps'>----- index.phps -----</a>
</body>
</html>

쿠키값을 통해서 문제를 해결해야하는 것 같다.

if(!$_COOKIE[user_lv])
{
SetCookie("user_lv","1");
echo("<meta http-equiv=refresh content=0>");
}





$password="????";
if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;
//쿠키 값이 숫자 0-9를 제외한 값으로 나오면 쿠키 값을 1로
if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;
if($_COOKIE[user_lv]>5) @solve();

자... 먼저 쿠키값이 설정되있지 않으면 user_lv를 1로 설정한다.
그 후 eregi 문자열 필터링 함수를 이용해 쿠키값에 0~9이외의 값이 있으면 쿠키값을 1로 설정한다.

그러니 숫자만 들어가야한다.

숫자만 있는 문자열을 찾을 경우 : "^[0-9]$" : 0~9까지 숫자만있는 문자열
숫자를 제외한 문자열을 찾을 경우 : "[^0-9]" : 0~9까지 숫자를 제외한 문자열



그 후 if문이 실행되는데 중요한건 @solve(); 인것같다. 저게 문제를 푸는 부분인것같다.

쿠키값이 6이상이면 쿠키값을 강제로 1로 설정하고 5를 초과한 값이면 @solve();이다.
애매하다 애매해; 5보다는 크고 6보다는 작은 쿠키값이 있으면 성공할듯싶다.

쿠키값을 변조시키는 웹툴은 찾아보면 많이 있다. 필자는 크롬 확장프로그램에서 EditThisCookie를 이용해서 쿠키값을 바꿔보겠다.
5보다는 크고 6보다는 작은 정수값만 생각했었는데, 꼭 정수가 아니라도 되는걸 깨닫고. 5.5로 쿠키값을 변조해보앗다.





문제가 풀렷다.


You have cleared the 1 problems.

Score + 200




'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글

[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03
[Webhacking.kr] 2번 Blind SQL Injection  (0) 2017.09.03
[Webhacking.kr] 00. 가입  (0) 2017.08.31

[Webhacking.kr] 00. 가입

2017. 8. 31. 23:13


이미지 첨부가 안되서 너무 슬프다...

(필자가 글쓰기 능력이 현저히 낮기때문에, 이미지 첨부가 안되는 것은 매우 치명적이다.)


어쨋든 http://webhacking.kr/ 로 접속해서 웹해킹문제 풀면서 공부하려고 했다만 회원가입에 해당되는 부분이 없다. 

알아서 어떻게든 가입해서 들어오라는 건데 (...)


일단 페이지 소스를 보도록 하자.

수상한 부분을 발견했다. 주석처리되어 있어 페이지에서는 보이지 않고, 또한 쓰이지 않고있는 기능이다.


<!--

Register

===========================================

<input type=button value='Register' onclick=location.href='join/includ2_join__frm__0001.php?mode=fea8b0334aa2e2cf950e8af26c83e3e2' style=width:50pt;height:20pt;border:0;background:black;color:lightgreen></td></tr>

===========================================

-->


주석처리된 내용은 레지스터(Register)라는 버튼에 대한것이다. 

여기서 join/includ2_join__frm__0001.php?mode=fea8b0334aa2e2cf950e8af26c83e3e2 이 부분이 중요하다.


결국 저 등록버튼을 누르면 저기로 이동하게 되므로, 직접 주소로 이동하도록하자


http://webhacking.kr/join/includ2_join__frm__0001.php?mode=fea8b0334aa2e2cf950e8af26c83e3e2


이동하면 ID,PW,EMAIL과 decode me라면서 base64코드가 나오는데, base64 디코드해보면 내 아이피주소다.


회원가입에 필요한 정보를 넣고 회원가입후 로그인 하면 성공...







참고로 다른 방법으로는 크롬 개발자툴(F12)를 이용해서 소스코드를 수정하여(Edit as HTML) 주석부분을 지워주면 Register 버튼이 생긴다.


그 버튼을 눌러 회원가입하는 방법이 있다.

'Wargame > 웹해킹(Webhacking.kr)' 카테고리의 다른 글

[Webhacking.kr] 14번  (0) 2017.09.04
[Webhacking.kr] 6번  (0) 2017.09.03
[Webhacking.kr] 4번 base64 & SHA1  (0) 2017.09.03
[Webhacking.kr] 2번 Blind SQL Injection  (0) 2017.09.03
[Webhacking.kr] 1번 index.phps  (0) 2017.08.31

+ Recent posts