IT보안관의 공부 클라우드
[xcz.kr]prob18 본문
<?
$key = "Congratulations!</br>Key is ??????????????????";
$liillillilliliili = @$_COOKIE['c'];
$liillillliiiliili = @$_GET['g'];
$lilllillliiiliili = @$_POST['p'];
#쿠키와 GET, POST를 이용하여 문제를 해결해야한다.
if(empty($liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');}
$lililillliiiliili = $liillillliiiliili . $liillillilliliili;
#lililillliiiliili = @$_GET['g'] + @$_COOKIE['c'] 대입
$lilililliiiiliill = $lilllillliiiliili;
#lilililliiiiliill = @$_POST['p'] 대입
function test($a){
$b = '';
for($i=0; $i < strlen($a); $i++){
$b = $b . ' - ' . ord(substr($a,$i,1));
#문자들을 아스키값으로 변환하여 문자 사이에 '-'를 추가함.
}
return $b;
}
#test(@$_GET['g'] + @$_COOKIE['c'])와 문자열 일치하는지 비교, @$_POST['p'] 와 문자열 일치하는지 비교
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';
}
?>
쿠키와 GET, POST에 빈 값이 있으면 안 되는 조건문이 존재하고
if(empty($liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');}
$lililillliiiliili = $liillillliiiliili . $liillillilliliili;
$lilililliiiiliill = $lilllillliiiliili;
아래 test 함수의 리턴 값과 비교하는 문자열을 아스키코드에서 텍스트 코드로 변환하면 문자열 "givemepassword", "keyplz!"가 나오는 걸 확인할 수 있다.
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';
}
이제 이걸 쿠키 값과 GET, POST 방식으로 전송하게 되면 키 값이 나오게 된다.
<form action="prob18.php?g=giveme" method="post">
<input type="text" name="p">
<input type="submit" value="전송">
</form>
개발자 도구를 이용하여 위 코드 추가,
javadocument.cookie="c=password";
개발자 도구 콘솔을 이용하여 쿠키값 추가
'워게임 > xcz.kr' 카테고리의 다른 글
[Xcz.kr] - prob21 (0) | 2021.02.19 |
---|
Comments