[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

+ Recent posts