噗,纪念一下我(在队长指导下)做出的第一道ctf签到题(逃)——下载下载

2019掘安杯,某国家题:下载下载

我一开始= = 太naive,下载了这个蓝色链接的文件,打开是这样的。(大佬直接burp拿到flag文件)

虽然我完全是萌新,不过基础操作还是会一点的。F12查看网页源代码。发现注释了几行。

右键蓝色链接 复制链接,粘贴到地址栏,把txt改成php,下载php文件。

 1 <?php
 2 header('Content-Type: text/html; charset=utf-8'); //网页编码
 3 function encrypt($data, $key) {
 4     $key = md5 ( $key );
 5     $x = 0;
 6     $len = strlen ( $data );
 7     $l = strlen ( $key );
 8     for($i = 0; $i < $len; $i ++) {
 9         if ($x == $l) {
10             $x = 0;
11         }
12         $char .= $key {$x};
13         $x ++;
14     }
15     for($i = 0; $i < $len; $i ++) {
16         $str .= chr ( ord ( $data {$i} ) + (ord ( $char {$i} )) % 256 );
17     }
18     return base64_encode ( $str );
19 }
20 
21 function decrypt($data, $key) {
22     $key = md5 ( $key );
23     $x = 0;
24     $data = base64_decode ( $data );
25     $len = strlen ( $data );
26     $l = strlen ( $key );
27     for($i = 0; $i < $len; $i ++) {
28         if ($x == $l) {
29             $x = 0;
30         }
31         $char .= substr ( $key, $x, 1 );
32         $x ++;
33     }
34     for($i = 0; $i < $len; $i ++) {
35         if (ord ( substr ( $data, $i, 1 ) ) < ord ( substr ( $char, $i, 1 ) )) {
36             $str .= chr ( (ord ( substr ( $data, $i, 1 ) ) + 256) - ord ( substr ( $char, $i, 1 ) ) );
37         } else {
38             $str .= chr ( ord ( substr ( $data, $i, 1 ) ) - ord ( substr ( $char, $i, 1 ) ) );
39         }
40     }
41     return $str;
42 }
43 
44 $key="MyCTF";
45 $flag="o6lziae0xtaqoqCtmWqcaZuZfrd5pbI=";//encrypt($flag,$key)
46 ?>

我没学过php,直接看别的无关的php代码,大概知道怎么输出结果,修改了一下。

 1 <?php
 2 header('Content-Type: text/html; charset=utf-8'); //网页编码
 3 function encrypt($data, $key) {
 4     $key = md5 ( $key );//MyCTF:
 5     $x = 0;
 6     $len = strlen ( $data );
 7     $l = strlen ( $key );
 8     for($i = 0; $i < $len; $i ++) {
 9         if ($x == $l) {
10             $x = 0;
11         }
12         $char .= $key {$x};
13         $x ++;
14     }
15     for($i = 0; $i < $len; $i ++) {
16         $str .= chr ( ord ( $data {$i} ) + (ord ( $char {$i} )) % 256 );
17     }
18     return base64_encode ( $str );
19 }
20 
21 function decrypt($data, $key) {
22     $key = md5 ( $key );
23     $x = 0;
24     $data = base64_decode ( $data );
25     $len = strlen ( $data );
26     $l = strlen ( $key );
27     for($i = 0; $i < $len; $i ++) {
28         if ($x == $l) {
29             $x = 0;
30         }
31         $char .= substr ( $key, $x, 1 );
32         $x ++;
33     }
34     for($i = 0; $i < $len; $i ++) {
35         if (ord ( substr ( $data, $i, 1 ) ) < ord ( substr ( $char, $i, 1 ) )) {
36             $str .= chr ( (ord ( substr ( $data, $i, 1 ) ) + 256) - ord ( substr ( $char, $i, 1 ) ) );
37         } else {
38             $str .= chr ( ord ( substr ( $data, $i, 1 ) ) - ord ( substr ( $char, $i, 1 ) ) );
39         }
40     }
41     return $str;
42 }
43 
44 $key="MyCTF";
45 $flag="o6lziae0xtaqoqCtmWqcaZuZfrd5pbI=";//
46 $ans=encrypt($flag,$key);
47 print $ans;
48 ?>

 直接用phpstudy myHomePage运行,莫得结果。

于是在队长的指点下(其实是直接告诉我)。

把末尾的 encrypt改成decrypt...

 得到flag.  myCTF{cssohw456954GUEB}


接下来是看了其他人的wp,所以想要复现一下QAQ。

http://120.79.1.69:8887/web3/ 

猜密码

这个我看了源码..但是我真的没学过php啊。。。看了一会儿,能够感觉它的简单,但是并没有做出来QAQ,还傻乎乎地输了password 之类的,密码错误

然后直接点击,猜密码(什么也不用输入)

Flag:jactf{09fb10c51810d92e1b7405d143332886}


猜你喜欢

转载自www.cnblogs.com/greenaway07/p/10662543.html