前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >信息安全实验室招新试题和完全解析

信息安全实验室招新试题和完全解析

作者头像
慕白
发布2018-08-03 10:52:46
1.1K0
发布2018-08-03 10:52:46
举报

任务一:个人介绍网页

写个网页应该是很简单的,不管是静态网页还是带特效的网页。但是有几个问题,需要说明一下。

题目说HTML和html文件格式会被后台过滤无法实现上传,这个是考我们如何绕过上传限制。

首先想想是不是JavaScript脚本限制,打开控制台,看到JS脚本控制的是文件的大小。

所以肯定不是本地校检,于是改后缀名。Html、hTml,等等都可以上传。只要不是HTML和html。

第二点,由于只可以上传HTML文件,那么资源文件就不可以上传了。比如说图片js、css文件,于是就只好通过CDN引入,图片可以用七牛云或其他的图床平台。这里我是用我的网站提供部分图片和JS的引入。

任务二:CTF试题

第一题

web类,登录拿flag

审查网页发现<!-- you will find a surprise in css-->的注释,于是查看css样式,发现密码提示,再更改输入框属性,改最大输入为11字符,登录,拿到flag 。

登陆成功, Flag 是 flag{XinXiAnQuanLabZhaoXinTest}

第二题

隐写术,找出图片中的flag

打开图片发现没有flag信息,于是用winhex打开,拉倒最下面,发现flag.txt文件信息。加上这张图片的文件名“rar.jpg”赤裸裸的提示是个压缩包。改后缀rar,打开文件发现flag.txt。

内容为flag{ZmxhZ3tXZWxjb21lIHRvIHRoZSBpbmZvcm1hdGlvbiBzZWN1cml0eSBsYWJ9}

一看文本内容就知道进过base64加密,遂解密得到flag。

解密成功,Flag是flag{Welcome to the information security lab}

第三题

隐写术

居然给了提示,“本题 你需要用到 Stegsolve.jar 这个软件 并且 电脑上要装有jdk(请自行百度jdk安装教程)”,所以你要考我们配置JDK环境?哈哈。下载后的图,直接用软件打开,一直按左键,过滤其他颜色编码。就得到了二维码。

扫描二维码得到flag{this is a new word}

第四题

大数模运算:求sum = 1!+2!+3!+……+5677!+5678!的末5位。

这个题,初看吓我一跳。题目是求模,为啥给的题是求和。好吧言归正传,对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。

就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值。这时候,我们要通过字符串的方法,来进行阶乘的运算。

其方法是:

首先,我们是可以先求一定范围内的最大值的阶乘位数,以便于申请数组空间的确定。

对于大数问题,我们要有将大数与数组结合的思想,可以利用类似于人工求值的方法求出有关大数的问题。

对于大数阶乘来说,最重要的是如何将每个数的每位数与相对应的数组元素储存起来,就如算50的阶乘,我们要先从1开始乘:

1*2=2,将2存到a0中,

接下来是用a0*3;

2*3=6,将6储存在a0中,

接下来是用a0*4;

6*4=24,是两位数,那么24%10==4存到a0中,24/10==2存到a1中,

接下来是用a0*5;a1*5+num(如果前一位相乘结果位数是两位数,那么num就等于十位上的那个数字;如果是一位数,num==0)

24*5=120,是三位数,那么120%10==0存到a0中,120/10%10==2存到a1中,120/100==1存到a2中,

接下来是用a0*3;a1*6+num;a2*6+num;

120*6=720,那么720%10==0存到a0中,720/10%10==2存到a1中,720/100==7存到a2中,

...................

直到乘到50,将每一位数储存为止。

诶诶,其实这个是大佬给的方法,会用就行。下面贴大佬代码,C语言实现。

代码语言:javascript
复制
 #include <stdio.h>    
    int main()    
    {    
        int a[20001];//储存每一位所得到的数     
        int temp,digit,n,i,j=0;//temp每次的得数   digit每次得数的位数      
        scanf("%d",&n);    
        a[0]=1;//从1开始乘     
        digit=1;//位数从第一位开始     
        for(i=2;i<=n;i++)    
        {    
            int num=0;    
            for(j=0;j<digit;j++)     
            {    
                temp=a[j]*i+num;//将一个数的每一位数都分别乘以i,     
                a[j]=temp%10;//将一个数的每一位数利用数组进行储存    
                num=temp/10;    
            }    
            while(num)//判断退出循环后,num的值是否为0     
            {    
                a[digit]=num%10;//继续储存     
                num=num/10;    
                digit++;    
            }    
        }    
        for(i=digit-1;i>=0;i--)//倒序输出每一位     
            printf("%d",a[i]);    
        printf("\n");    
        return 0;    
    }

代码写好了,跑起来试试!直接来狠的求5678!得出的结果大吃一惊!

末尾全部是0,很诧异有木有!我还以为结尾是乱七八糟的数字。好美不是么,这样就有思路了。题目叫求的是末尾5位,那就找临界值啊。现在找一个最大的N!使其末尾5位不全是0!经测试24是最大的。

那么问题简化为求sum = 1!+2!+3!+……+24!的末5位。

好吧,求每个数阶乘的末5位,在求和就可以得到答案啦。Excel是个好东西哈。最终得到末6位是840313。

拿到flag{40313}

第五题

双基回文数

计算大于正整数16000的最小双基回文数(一个正整数至少在两种进制模式下都是回文数,则称这个数为双基回文数)

直接贴代码,由于是JavaScript写的代码,F12浏览器控制台运行,得到结果。

这里范围写小点16000-100000。

代码语言:javascript
复制
function s() {
  var done = 0;
  var c = 0;
  var n = 0;
  for (var j = 16000; done < 2 && j <= 100000; j++) {
    for (var i = 2; i <= 10; i++) {
      c++;
      n = tenToN(j, i);
      if (f(n.toString())) {
        ++done;
        if (done == 2) {
          return j;
        }
      }
    }
    done = 0;
  }
 console.log("not found ");
}
function f(s) {
  var len = s.length;
  for (var i = 0; i < (len - 1) / 2 | 0; i++) {
    if (s[i] != s[len - i - 1]) {
      return false;
    }
  }
  return true;
}
function tenToN(num, n) {
  var r = num;
  var ret = "";
  for (; r >= n; ret = r % n + ret, r = r / n | 0);
  ret = r + ret;
  return ret;
}
s();

跑出结果,flag{16191}

第六题

解码题

打开网页发现是一串字符,0x开头,说明是16进制。然后解码为文本发现是URL编码之后的文本,再去解码。

解码的字符串以==结尾,发现是经过base64加密的文本。

MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMDEKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEKOTcKMTEwCjk4Cjk3CjExNA==

再去解密base64,得到十进制的数据。

再对照ASCII码,得出最终flag。flag{welcometoshiyanbar}

第七题

培根解码

打开网页明显发现是摩斯密码,解密之后的内容:

代码语言:javascript
复制
morse_is_cool_but_bacon_is_cooler_dccdcccdddcdcccddcccccccccddcdccccdccccccdcccdccdccccdccdddccdddccdcdd

百度培根密码:得到介绍

培根所用的密码是一种本质上用二进制数设计的,没有用通常的0和1来表示,而是采用a和b,如大写字母和小写字母,英文和数字,斜体和正体等等。那么在这里D为b,C为a.

替换后为baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaaabaaabaabaaaabaabbbaabbbaababb

对照培根密码表,或者在线解密。点击这里

得到:shiyanbaiscool但是怎么输入都是错的,怀疑人生。最后发现,原摩斯码居然有“/”,好吧用空格代替。得到最终flag{SHIYANBA IS COOL}

第八题

jsfuck

说实话,这个加密惊艳到我了,第一次接触到一脸懵逼。百度里面的代码,知道是jsfuck,打开官方Github看到了介绍。下面的代码这是很小一部分。

这是一个黑客奇葩的想法。

黑客行为中,你的js代码可能被关键词检测,于是考虑躲避关键词检测的想法,例如 eval等关键词。

1、想了各种方法来规避这个检测。

2、把方法写成通用的程序。

3、把包含的字符做到极致,最后只剩下 ()+[]!  这六个字符。

我的思路如下:

首先看看可不可以直接到控制台运行,复制回车运行。居然运行不了!再想想是不是少了字符。看到开始的字符不对称,半角方括号没有括起来。于是加一个]。运行弹出alert对话框:flag is not here。

这时候看到官方文档有个实例,与给出的代码有点相仿。

于是删除结尾的"()"代码,运行。没输出,考虑到开始的字符不对称,半角方括号没有括起来。于是在末尾加一个]。回车得到一个数组,打开数组得到flag。好了一切就是那么奇妙。

flag{f_f_l_u_a_c_g_k}

第九题

SQL注入

打开界面,只有一个提示。撸起袖子就是干,寻找注入点吧!

首先想到的就是该id,将x=1中的1改为其他数字,2、3、4...测试到4就可以得到flag了。

不过,还不满足,再加一句or 1=1,返回表中所有内容。这里发现ID有4,5,6。就是说结尾的x=4中的ID为4,5,6都可以注入。实验了一下确实可以。7就不可以了。

flag{fanke12}

第十题

逆向工程

就是一个逆向的基础教程,不写过程了。

第十一题

破解注册机

不得不说,给的工具我不会用。于是百度下载了一个吾爱破解的专属OD工具。爽歪歪!总之就是暴力破解,在定位到GetDlgItemText这个API处,F8单步步过向下跟随到有test判断的地方,注意观察数据堆栈区的位置。

004011E5地址处call调用一个函数,并且在之前push了三个参数。第二处test指令下面那条je跳转指令用nop填充掉。

保存时一个学问啊,刚开始逆向,连保存都不会。可怜,还是百度好久才会。

效果图如下:

任务三:网站测试和建议

在做SQL注入时,通过sqlmap暴库,绕过waf,跑出了网站的数据库。查看了部分表,但是下课了,就没继续了。后来waf机制更严格了,随便一注入IP就被封,就没有测试了。

尝试长传小马,waf没有检测出恶意代码,但是万恶的监测机制,把我绕过后缀名检测的php文件直接改后缀为HTML,就没法获取webshell了。这里绕过的方法是双后缀,比如a.Html.php,就可以上传了。

当然,还有一个方法应该可以拿权限,就是通过SQL注入。

union select语句来写入webshell。

‘ union select 1,’<?php eval($\_POST[cmd]);?>‘ INTO OUTFILE ‘/var/www/dvwa/cmd.php’ +- -+

‘ union select 1,’<?php eval($\_POST[cmd]);?>’ into outfile ‘文件绝对路径’+- -+

绝对路径的获取需要在SQL注入那个网页,通过注入报错返回绝对路径。

还有一个方式是通过图片上传,在问题一有个可以上传图片的地方,上传后,可以返回文件袋相对地址。这时候,再猜绝对路径。

我们通过CMD的copy命令,将小马文件压制在图片里。在用截断的方式该jpg为可执行php,在用菜刀连接获取webshel。

除特别注明外,本站所有文章均为慕白博客原创,转载请注明出处来自https://cloud.tencent.com/developer/article/1176174

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 任务一:个人介绍网页
  • 任务二:CTF试题
  • 任务三:网站测试和建议
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档