第3章-15 统计一行文本的单词个数 (15 分)

重磅消息!!!自动化测试居然这么多好处!!!

  返回  

BUUCTF Reverse/[FlareOn4]login

2021/7/20 21:16:18 浏览:

BUUCTF Reverse/[FlareOn4]login

在这里插入图片描述

下载得到一个txt文档以及一个HTML文件

在这里插入图片描述

txt文档里面是提示

在这里插入图片描述

打开HTML文件,又是一道字符串比较的题目,右键查看源代码

在这里插入图片描述


<!DOCTYPE Html />
<html>
    <head>
        <title>FLARE On 2017</title>
    </head>
    <body>
        <input type="text" name="flag" id="flag" value="Enter the flag" />
        <input type="button" id="prompt" value="Click to check the flag" />
        <script type="text/javascript">
            document.getElementById("prompt").onclick = function () {
                var flag = document.getElementById("flag").value;
                var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});
                if ("PyvragFvqrYbtvafNerRnfl@syner-ba.pbz" == rotFlag) {
                    alert("Correct flag!");
                } else {
                    alert("Incorrect flag, rot again");
                }
            }
        </script>
    </body>
</html>

这条语句是对输入的flag进行变换,最后与PyvragFvqrYbtvafNerRnfl@syner-ba.pbz 进行比较

 var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});
 if ("PyvragFvqrYbtvafNerRnfl@syner-ba.pbz" == rotFlag) {
                    alert("Correct flag!");
                } else {
                    alert("Incorrect flag, rot again");
                }

百度了一下java中replace函数的应用

在这里插入图片描述
在这里插入图片描述

推测这个语句是对所有的大写字母和小写字母进行变换,重点是这个语句

(c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});

charCodeAt(0)是返回字符串中的一个字符。 a > b ? a : b 为三目运算符

这语句的意思为,将26个字母中的前13位变成26个字母中的后13位,比如A + 13 = N, O - 13 = B。根据这个算法写出脚本

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
    int i;
  char flag[] = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz";
  for(i = 0 ; i < strlen(flag); i++)
  {
      if(flag[i] <= 'Z' && flag[i] >= 'A')  //大写字母
      {
          if(flag[i] <= 'M' && flag[i] >= 'A') //大写字母前13个字母
          {
              flag[i] += 13;
          }
          else
          {
                flag[i] -= 13;
          }
      }
      else if(flag[i] <= 'z' && flag[i] >= 'a') //小写字母
      {
          if(flag[i] <= 'm' && flag[i] >= 'a') //小写字母前13个字母
          {
              flag[i] += 13;
          }
          else
          {
                flag[i] -= 13;
          }
      }

  }
  printf("flag{%s}\n",flag);
   return 0;

}

运行得到flag

在这里插入图片描述

flag{ClientSideLoginsAreEasy@flare-on.com}

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号