Title
Web Basic
Description
wrong T.T
소스를 보면 php소스가 나온다.
<html>
<head>
<link rel="shortcut icon" href="../images/favicon.ico" type="image/x-icon">
<title>Prob18</title>
</head>
<body style="background-image:url('../images/content-tail.gif');">
<b>Title</b></br>
<i>Comming Soon</i></br></br>
<b>Description</b></br>
<font size="2px">
View source</br>
<?
$key = "Congratulations!</br>Key is ??????????????????";
$liillillilliliili = @$_COOKIE['c'];
$liillillliiiliili = @$_GET['g'];
$lilllillliiiliili = @$_POST['p'];
if(empty($liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');}
$lililillliiiliili = $liillillliiiliili . $liillillilliliili;
$lilililliiiiliill = $lilllillliiiliili;
function test($a){
$b = '';
for($i=0; $i < strlen($a); $i++){
$b = $b . ' - ' . ord(substr($a,$i,1));
}
return $b;
}
if(test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
echo $key;
}
else{
echo 'wrong T.T';
}
?>
</font>
</body>
</html>
$liillillilliliili = @$_COOKIE['c'];
$liillillliiiliili = @$_GET['g'];
$lilllillliiiliili = @$_POST['p'];
if(empty($liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');}
cookie, get, post 방식으로 값들을 받는다. 모두 값이 존재해야 한다.
$lililillliiiliili = $liillillliiiliili . $liillillilliliili;
$lilililliiiiliill = $lilllillliiiliili;
function test($a){
$b = '';
for($i=0; $i < strlen($a); $i++){
$b = $b . ' - ' . ord(substr($a,$i,1));
}
return $b;
}
if(test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
echo $key;
}
else{
echo 'wrong T.T';
}
난독화를 풀어보자.
A = get. cookie
B = post
function test.... 생략
if(test(A).....생략....|| test(B)...생략
A에는 get으로 받은 문자열과 cookie로 받은 문자열이 더해지게 된다.
function test($a){
$b = '';
for($i=0; $i < strlen($a); $i++){
$b = $b . ' - ' . ord(substr($a,$i,1));
}
return $b;
test함수를 살펴보면, 문자열의 문자들을 아스키 값으로 변환한다.
if(test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){
echo $key;
따라서, A에는 givemepassword라는 값이, B에는 keyplz!라는 값이 들어있어야 key값을 출력해준다.
get으로 g값에 g를 담고, cookie로 c값에 ivemepassword를 담고, post로 p값에 keyplz!를 넘겨주면 된다.
burp suite를 사용했다.
재밌다.
authkey : web_basic_problem_haha
'WAR GAME > XCZ.kr' 카테고리의 다른 글
XCZ.kr [prob 20] 풀이 (0) | 2018.09.10 |
---|---|
XCZ.kr [prob 19] 풀이 (0) | 2018.09.10 |
XCZ.kr [prob 17] 풀이 (0) | 2018.09.10 |
XCZ.kr [prob 16] 풀이 (0) | 2018.09.10 |
XCZ.kr [prob 15] 풀이 (0) | 2018.09.10 |