funny_php

点击此处获得更好的阅读体验


WriteUp来源

https://xz.aliyun.com/t/6912

题目考点

解题思路

根据给出的加密函数,写出解密php代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
$miwen="=Z2KqkyJnu1IKMIIHgyJDO1GBkRGCWIFWqxFSEHFXS0C/NxC80GB54mC9DQA0RGZ";

$miwen=strrev($miwen);
$miwen=str_rot13($miwen);
$miwen=base64_decode($miwen);
print($miwen);

for($i=0;$i<strlen($miwen);$i++){
$str1=ord($miwen[$i])-$i;
$_=$_.$str1;
}

$arr1=array();
for($i=0;$i<2*strlen($_);$i=$i+2){
$c=substr($_,$i,2);
$arr1[$i]=$c;
}

$arr2=array();
$j=0;
for($i=0;$i<count($arr1);$i++){
if($arr1[$i]){
$arr2[$j]=$arr1[$i];
$j++;
}
}

for($i=0;$i<count($arr2);$i++){
$_c=$arr2[$i];
$_c=chr($_c);
$str2=$str2.$_c;
}



$a=array();

for($i=0;$i<2*strlen($str2);$i=$i+2){
$c=substr($str2,$i,2);
$a[$i]=$c;
}



$d=array();
$j=0;
for($i=0;$i<count($a);$i++){
if($a[$i]){
$d[$j]=$a[$i];
$j++;
}
}


$str3="";
for($i=0;$i<count($d);$i++){
$_c=$d[$i];
$str3=$str3.$_c;
}
print($str3); //输出$str3后得到unpack后的字符串,根据unpack函数规则,构造最终的flag
print_r(pack("C*",102,108,97,103,123,101,97,115,121,95,101,110,99,111,100,101,125));
?>

Flag

1
flag{easy_encode}