웹해킹 webhacking.kr Lv.6 / 6번 / - (cookie 편집, 암호화, 복호화)

Study-security/Web-Hack|2013. 7. 6. 03:13

  http://webhacking.kr/challenge/web/web-06/


6번 문제를 풀어봅시다.


6번문제에 접속 하면 아래와 같은 화면을 보게 됩니다.




무슨 내용인지 모르니 소스를 보도록 합시다. (Chorme 기준, 우측 클릭 후 페이지 소스 보기)

소스보기를 누르면 아래와 같은 코드가 보입니다.




index.phps 에 소스 내용이 있는듯 합니다.

webhacking.kr/challenge/web/web-06/index.phps 에 접속하여 소스를 보도록 합시다.

소스는 아래와 같습니다.


<html>
<head>
<title>Challenge 6</title>
</head>
<body>

<?

if(!$_COOKIE[user])
{
$val_id="guest";
$val_pw="123qwe";

for(
$i=0;$i<20;$i++)
{
$val_id=base64_encode($val_id);
$val_pw=base64_encode($val_pw);

}

$val_id=str_replace("1","!",$val_id);
$val_id=str_replace("2","@",$val_id);
$val_id=str_replace("3","$",$val_id);
$val_id=str_replace("4","^",$val_id);
$val_id=str_replace("5","&",$val_id);
$val_id=str_replace("6","*",$val_id);
$val_id=str_replace("7","(",$val_id);
$val_id=str_replace("8",")",$val_id);

$val_pw=str_replace("1","!",$val_pw);
$val_pw=str_replace("2","@",$val_pw);
$val_pw=str_replace("3","$",$val_pw);
$val_pw=str_replace("4","^",$val_pw);
$val_pw=str_replace("5","&",$val_pw);
$val_pw=str_replace("6","*",$val_pw);
$val_pw=str_replace("7","(",$val_pw);
$val_pw=str_replace("8",")",$val_pw);




Setcookie("user",$val_id);
Setcookie("password",$val_pw);

echo(
"<meta http-equiv=refresh content=0>");
}
?>

<html>
<head>
<title>Challenge 6</title>
</head>
<body>

<?

$decode_id
=$_COOKIE[user];
$decode_pw=$_COOKIE[password];

$decode_id=str_replace("!","1",$decode_id);
$decode_id=str_replace("@","2",$decode_id);
$decode_id=str_replace("$","3",$decode_id);
$decode_id=str_replace("^","4",$decode_id);
$decode_id=str_replace("&","5",$decode_id);
$decode_id=str_replace("*","6",$decode_id);
$decode_id=str_replace("(","7",$decode_id);
$decode_id=str_replace(")","8",$decode_id);

$decode_pw=str_replace("!","1",$decode_pw);
$decode_pw=str_replace("@","2",$decode_pw);
$decode_pw=str_replace("$","3",$decode_pw);
$decode_pw=str_replace("^","4",$decode_pw);
$decode_pw=str_replace("&","5",$decode_pw);
$decode_pw=str_replace("*","6",$decode_pw);
$decode_pw=str_replace("(","7",$decode_pw);
$decode_pw=str_replace(")","8",$decode_pw);





for(
$i=0;$i<20;$i++)
{
$decode_id=base64_decode($decode_id);
$decode_pw=base64_decode($decode_pw);
}

echo(
"ID : $decode_id<br>");
echo(
"PW : $decode_pw<br>");



if(
$decode_id=="admin" && $decode_pw=="admin")
{
@
solve();
}


?>

<!--

index.phps

-->

</body>
</html>


1,2,3,4,5,6,7,8,9,0 을 각 !,@,#,$,%,^,&,*,(,) 으로 치환한 후 base64 방식으로 20번 인코딩 한다고 되어있습니다.


실제로, 화면의 id와 pw 의 내용을 20번 디코딩 해 보면 화면에 있는 user와 password쿠키의 내용이 보여집니다.


@solve 는 id와 pw가 admin이 되면 실행됩니다.



댓글()

웹해킹 webhacking.kr Lv.1 / 1번 /- (cookie 편집)

Study-security/Web-Hack|2013. 7. 6. 02:55

1번 문제를 풀어보도록 합시다.

처음 1번 문제에 접속하면 아래와 같은 화면이 보입니다.



여기서 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>


위 코드에서 보이듯 uesr_lv 란 쿠키의 내용이 5를 넘으면 @solve() 가 실행되어 문제가 해결됨을 알수 있습니다.

하지만 6이상의 숫자로 바꿀 시 uesr_lv 는 1이 되버리기 때문에 문제가 햇갈리게 되어버립니다.



댓글()

웹해킹 webhacking.kr Lv.0 - 가입 (복호화)

Study-security/Web-Hack|2013. 7. 1. 20:52

Web Hacking 을 공부하던 중 좋은 수련 사이트가 없나 찾다가 http://webhacking.kr/ 를 알게 되었습니다.


가입할때부터 간단한 복호화를 요구하는데, 방법을 알아보도록 하겠습니다.


http://webhacking.kr/

위 링크로 접속하면 아래와 같은 화면을 보게 됩니다.



Join 버튼을 눌러서 가입하게 되는데, 


위와 같은 창이 뜹니다.


id 에 아이디, pw에 비밀 번호, email에 email을 입력하시면 됩니다.


다만, decode me 를 디코딩 해야 합니다.


디코딩

 복호화 라고도 하며, 암호화(인코딩) 된 문장 또는 파일을 원래 상태로 돌려놓는 작업 입니다.


 

http://tools.web-max.ca/encode_decode.php

위 사이트를 참고해 보세요.

그럼.. 결과는 직접 해보도록 합시다.

댓글()

소설 쓰기의 시작 -도입부-

Study-writing/Skill-Novel|2012. 7. 21. 06:04

소설을 읽을때 가장 먼저 눈에 들어오는건 도입부다.

따라서, 도입부가 얼마나 재밌냐에 따라 몰입도가 결정되기도 한다.


많은 작가들은 도입부에서 독자가 흥미를 느끼게 하기 위해 몇가지 장치를 한다.


예를들자면.


1

우리는 왜 웃는가?

2

"......그래서 그는 문장을 읽고 웃음을 터뜨리더니, 그대로 죽고 말았습니다,"

 올림피아의 넓은.......


-베르나르 베르베르 장편소설 웃음中 발췌-


위와 같이 첫 문단에서 독자에게 질문을 던져 독자가 흥미를 끌게 하는 방법


1

"이건 진짜 '돈더스톰'이야!"

제이미 맥그리거가 말했다. 그는 스코틀랜드 고원지대의 사나운 폭풍우속에서 성장했지만.........


-시드니 셀던 장편소설 게임의 여왕中 발췌-


위와 같이 말로 시작하여 독자가 대화의 주체와 내용을 궁금하게 하는 방법


서장

 여러 번 가 본 것은 아니지만 베르사유의 마로니에들이 주는 변함 없는 느낌 중의 하나는 축축함이었다. 물에불은 듯한, 그러면서도 물기는 전혀 안보이는 느낌만의 어떤 축축함. 그러나 비엔나의 마로니에는 다르다.


-이문열 장편소설 추락하는것은 날개가 있다中 발췌-


위와 같이 어떤 대상을 서술함으로서 독자가 서술되어진 대상에 호기심을 느끼게 하는 방법


1.일출 없는 새벽

 언제 떠올랐는지 모를 그믐달이 동녘 하늘에 비스듬히 걸려 있었다. 밤마다 스스로의 몸을 조금씩 조금씩 깍아내고 있는 그믐 달빛은 스산하게 흐렸다. 달빛은 어둠을 제대로 사르지 못했고, 어둠은 달빛을 마음대로 물리치지 못하고 있었다. 달빛과 어둠은 서로를 반반씩 섞어..............


-조정래 장편소설 태백산맥中 발췌-


위와 같이 배경을 서술하여 독자가 몰입하게 하는 방법


등이 있다.



어느 방법을 사용할지는 주 독자층과 글의 분위기에 따라 다른데,


우선 첫 문장에서 질문을 던지는 방법은 주로 어린 연령층-긴 글을 읽는데 흥미를 느끼지 못하리라 추측되거나, 짧은 호흡의 글에 익숙한 독자-을 대상으로 둔 글에 어울린다.

짧은 호흡에 강한 임팩트를 주기 때문에 앞으로의 긴 서술을 읽는데에 시발점이 되어주기 때문이다.


말로 시작하는 방법 또한 호흡이 짧은편 이고 위와 비슷한 상황에 사용하기 좋다. 위와 다른점은 위에비해선 호흡이 길고, 함축적이지 않으므로 좀더 독서량이 많은 층에 어울린다.


대상을 서술하거나 배경을 서술하는 방법은 독자가 읽자마자 흥미를 느끼게 하긴 어렵다. 그러나 긴 호흡을 가진 글에 익숙한 독자에겐 글에 몰입하기 쉬운 환경을 조성해준다.



도입부를 소홀히 하기 쉬우나 이는 소설의 첫인상이라 할수있는 부분이다.

앞으로 글을쓸땐-소설이 아니더라도- 도입부에 좀더 신경을 써 보는건 어떨까?

댓글()