IT보안관의 공부 클라우드
[Xcz.kr] - prob21 본문
Xcz.kr prob21
Prob21 PHP Obfuscation Crack
http://ddecode.com/hexdecoder/ 를 이용하여 소스 디코딩
http://www.phpformatter.com/ 를 이용하여 소스 포매팅
<?
${"GLOBALS"}["gasyarknd"] = "b";
${"GLOBALS"}["rwliiiqfvfp"] = "i";
#함수
function h($a)
{
${"GLOBALS"}["pxzweahruqok"] = "b";
${ ${"GLOBALS"}["pxzweahruqok"] } = "";
${"GLOBALS"}["uxoiiikapcv"] = "b";
for (${ ${"GLOBALS"}["rwliiiqfvfp"] } = 0; ${ ${"GLOBALS"}["rwliiiqfvfp"] } < 5; ${${"GLOBALS"}["rwliiiqfvfp"]}++) {
$ydzorvqk = "a";
$gflrozo = "b";
${"GLOBALS"}["erpxzozdey"] = "i";
${$gflrozo} = ${${"GLOBALS"}["gasyarknd"]} + ord(substr(${$ydzorvqk}, ${${"GLOBALS"}["erpxzozdey"]}, 1));
}
return ${${"GLOBALS"}["uxoiiikapcv"]};
}
$jbojdbertutk = "KEY";
$vtefigaylx = "mun";
${"GLOBALS"}["hpceeyxto"] = "a";
$ktjmdjm = "a";
${"GLOBALS"}["mimtemucybpc"] = "mun";
${$jbojdbertutk} = "Congratulations!</br>Key is ?????????????????????";
${"GLOBALS"}["gmfifbfl"] = "a";
${${"GLOBALS"}["mimtemucybpc"]} = @$_GET["key"];
${"GLOBALS"}["wvdcxsdsqb"] = "x";
@${$ktjmdjm} = explode("-", ${$vtefigaylx});
$gfxqkfxurga = "x";
$dlmordkk = "a";
for (${${"GLOBALS"}["wvdcxsdsqb"]} = 0; ${${"GLOBALS"}["wvdcxsdsqb"]} < 5; ${$gfxqkfxurga}++) {
if (preg_match("/[^a-zA-Z0-9]/", @${${"GLOBALS"}["hpceeyxto"]}[${${"GLOBALS"}["wvdcxsdsqb"]}])) {
exit("Error!");
}
}
if (is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[0], 0, 2)) && !is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[0], 4, 1)) && h(${${"GLOBALS"}["gmfifbfl"]}[0]) > 312 && h(${${"GLOBALS"}["hpceeyxto"]}[0]) < 333 && !is_numeric(substr(${$dlmordkk}[1], 0, 1)) && is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[1], 3, 2))) {
$qcpkjlbgy = "a";
${"GLOBALS"}["oqotjbvn"] = "a";
${"GLOBALS"}["bbghzot"] = "a";
if (h(${${"GLOBALS"}["bbghzot"]}[1]) > 300 && h(${$qcpkjlbgy}[1]) < 326 && !is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[2], 0, 1)) && is_numeric(substr(${${"GLOBALS"}["hpceeyxto"]}[2], 1, 1)) && h(${${"GLOBALS"}["oqotjbvn"]}[2]) > 349 && h(${${"GLOBALS"}["hpceeyxto"]}[2]) < 407) {
${"GLOBALS"}["wsjuxwxbzms"] = "a";
${"GLOBALS"}["ofvmiatcdko"] = "a";
$oqhejquzit = "a";
if (!is_numeric(substr(${${"GLOBALS"}["wsjuxwxbzms"]}[3], 0, 2)) && is_numeric(substr(${$oqhejquzit}[3], 2, 3)) && h(${${"GLOBALS"}["ofvmiatcdko"]}[3]) > 357 && h(${${"GLOBALS"}["hpceeyxto"]}[3]) < 359) {
${"GLOBALS"}["erqqjpct"] = "a";
${"GLOBALS"}["okgondfidky"] = "a";
if (round((h(${${"GLOBALS"}["hpceeyxto"]}[0]) + h(${${"GLOBALS"}["okgondfidky"]}[1]) + h(${${"GLOBALS"}["hpceeyxto"]}[2]) + h(${${"GLOBALS"}["hpceeyxto"]}[3])) / 4) == h(${${"GLOBALS"}["erqqjpct"]}[4])) {
$oaqqkxn = "KEY";
exit(${$oaqqkxn});
}
}
}
}
echo "Wrong T.T";
?>
<?php
#function h($a) #배열의 아스키 값을 모두 합해서 리턴
function h($a)
{
$b = "";
for ($i= 0; $i<5; $i++) {
$b = $b + ord(substr($a, $i , 1));
}
return $b; #b 리턴
}
$KEY= "Congratulations!</br>Key is ?????????????????????";
$mun = @$_GET["key"];
#GET 메소드로 key값을 받아 mun에 저장
@$a = explode("-", $mun);
# "-" 를 제거하고 @$a에 저장
#001aG-AU007-a0GCC-kk000-G69AT
#313 301 350 358 330
#@$a의 0~4번째 자리 검사 영문,숫자이어야 한다.
for ($x = 0; $x < 5; $x++) {
if (preg_match("/[^a-zA-Z0-9]/", @$a[$x])) {
exit("Error!");
}
}
#조건문1 첫번째 배열의 0~1번재 자리는 숫자이고 00??? 첫번째 배열의 4번째 자리는 숫자가 아니고 ????a. h(첫번째 배열의 총 해쉬값은 312보다 크고 333보다 작고 두번재 배열의 0번째 자리는 숫자가 아니고 a???? 두번째 배열의 3~4번째 자리는 숫자이여야 한다. ??00?
if (is_numeric(substr($a[0], 0, 2)) && !is_numeric(substr($a[0], 4, 1)) && h($a[0]) > 312 && h($a[0]) < 333 && !is_numeric(substr($a[1], 0, 1)) && is_numeric(substr($a[1], 3, 2))) {
#조건문2 두번째 배열의 총 해쉬값은 300초과 326미만이고 세번째 배열의 0번재 자리는 숫자가 아니고 a0??? 세번째 배열의 1번째 자리는 숫자이고 세번재 배열의 총 해쉬값은 349초과 407 미만이여야 한다.
if (h($a[1]) > 300 && h($a[1]) < 326 && !is_numeric(substr($a[2], 0, 1)) && is_numeric(substr($a[2], 1, 1)) && h($a[2]) > 349 && h($a[2]) < 407) {
#조건문3 네번째 배열의 0~1번재 자리는 숫자가 아니고 네번째 배열의 2~5번째 자리는 숫자이고 aa000 네번재 배열의 총 해쉬값은 357 초과 359 미만
if (!is_numeric(substr($a[3], 0, 2)) && is_numeric(substr($a[3], 2, 3)) && h($a[3]) > 357 && h($a[3]) < 359) {
#조건문4 첫밴째 두번째 세번재 네번째 배열의 해쉬값 / 4룰 반올림한 값과 다섯번째 배열의 총 해쉬값과 동일해야 한다.
if (round((h($a[0]) + h($a[1]) + h($a[2]) + h($a[3])) / 4) == h($a[4])) {
exit($KEY);
}
}
}
}
echo "Wrong T.T";
?>
아스키 코드를 입력해서 총 합계를 구하는 함수를 파이썬으로 작성해서 진행하면 유용할 듯.
'워게임 > xcz.kr' 카테고리의 다른 글
[xcz.kr]prob18 (0) | 2021.02.24 |
---|
Comments