自学内容网 自学内容网

CTFshow信息搜集web1~web20详解

目录

1、web1 源码泄露

2、web2 页面源代码泄露

3、 web3 响应头泄露

4、web4 robots协议

5、web5 phps源码泄露

 6、web6 源码压缩包泄露

7、web7 GIT泄露

 8、web8  SVN泄露

9、web9 vim缓存

10、web10 cookie

 11、web11 域名解析

12、web12 网站公开信息

13、web13 技术文档敏感信息

14、web14 editor

 15、 web15 邮箱信息泄露

16、web16 探针

 17、web17 sql备份文件

18、web18 

19、web19 前端AES密钥泄露

法一:解密AES算法

 法二:前端绕过js,直接传参

20、web20 数据库mdb文件泄露


感觉做了题目,但是没有一个系统化的练习,下次遇到的时候还是做不出来,于是在做了一番思想斗争之后,还是开通了ctfshow的会员(流下没钱的泪水呜呜呜)

1、web1 源码泄露

打开f12界面,就拿到flag

2、web2 页面源代码泄露

在设置里打开web开发者工具,就可以看到flag

3、 web3 响应头泄露

点开题目看啥也没有,

 抓包试试

 拿到flag

4、web4 robots协议

抓包也没有反应,查看robots.txt

发现了flagishere.txt文件,访问得到flag

5、web5 phps源码泄露

这道题看了题解之后发现时要用到phps,phps即php source 就是php的源代码文件,用户通过web服务器不能访问到php文件,可以通过访问phps来实现

 6、web6 源码压缩包泄露

访问www.zip,下载压缩包,得到两个文件,查看fla000g.txt文件的内容,发现是flag,拿去提交,发现是错的,这个是假的flag

查看压缩包里面的index.php文件,发现有提示,flag在fla000g.txt文件里面

于是访问fla000g.txt文件可得flag

ctfshow{f322b43e-f829-448a-a3a0-9bb106a2724e}

7、web7 GIT泄露

访问url/.git得到flag

 8、web8  SVN泄露

访问url/.svn查看泄露的源码

9、web9 vim缓存

通过访问index.php.swp,访问首页中的交换文件下载缓存文件

10、web10 cookie

查看题目提示,提示cookie不能有隐藏信息,于是我们抓包便可以查看到cookie,url解码即可得到flag

 11、web11 域名解析

题目提示解析域名,但是题目环境好像有问题,没有flag

 题目直接给出了flag

flag{just_seesee}

12、web12 网站公开信息

用扫描工具扫,还是什么也没扫出来

 于是尝试看看robots

 提示有admin,于是我们尝试访问admin,显示登陆需要密码

我们查找网页,发现页面底端有一串数字,尝试将其作为密码填入,用户名为admin

 成功拿到flag

13、web13 技术文档敏感信息

打开网页,先用扫描工具扫一遍,发现扫出来了几个,结果去访问的时候发现全部都不能访问

于是回到网页,在网页的最下端,看到一个document,发现可以点进去(不得不感慨脑洞真大!!)

 

 下载文件打开,发现了一个网站地址和登录账号,尝试访问这个地址,结果访问不了,仔细查看地址中的,your-domain,发现是“你的网站地址”的意思

 于是我们在网页地址后面加上,即访问

https://7b96e322-36ab-4187-8e70-5729ea96fafd.challenge.ctf.show/system1103/login.php

 用给的账号密码登录就拿到flag

14、web14 editor

根据题目的提示,访问editor,我这里是用的扫描工具扫出来了editor这个目录去访问的

 访问editor

 我们尝试下他们的功能,于是查看到了文件空间

 linux系统的文件基本都在var里面,选择www/html/nothinghere,就看到了flag文件,直接访问不了

 由于我们当前的网页目录在editor,要想访问fl000g.txt文件的话,就需要在url后面加上/nothinghere/fl000g.txt

 如:

https://90ac3807-4daa-41a2-abff-56c7adca6862.challenge.ctf.show/nothinghere/fl000g.txt

 拿到flag

 15、 web15 邮箱信息泄露

还是老规矩,扫描工具扫一下,发现admin

 访问之后发现存在一个登陆界面,尝试了好几次,也没发现密码是什么,于是点击忘记密码试试

 点击忘记密码之后发现有一个密保问题,问的是归属地是哪里,于是我们想到了题目提示的邮箱,通过邮箱查询qq号归属地,发现是西安

 于是输入西安,就重置了密码,用重置的密码登录即可,用户名依旧是admin,拿到flag

16、web16 探针

拿到题目,用目录扫描工具也扫描不出什么东西来,看题目提示说有探针:

网络安全设备探针是一种专门用于网络安全领域的工具,它通过对网络流量进行监控和分析,帮助发现和防止网络攻击。

于是访问tz.php

 看到phpinfo,点击进去,搜索得到flag

 17、web17 sql备份文件

扫描工具扫一下,发现backup.sql,访问一下试试

 打开文件里面就是flag

 这里要补充一下,备份的SQL文件是一个包含数据库结构和数据的文本文件,通常是以.sql的格式来命名。

18、web18 

点击查看源码,发现当score>100的时候,会有如下输出

 解码得

 访问110.php就得到了flag

19、web19 前端AES密钥泄露

查看源码,分析代码发现,只要

$u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'

就输出flag,但是我们在前端提交代码之后,会自动调用checkForm函数,从而调动AES加密算法,即我们输入的pazzword经过AES加密之后才传入,于是就算我们输入

username='admin' && $pazzword ='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'

 也得不到flag


<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="renderer" content="webkit"/>
    <script src="js/jquery.min.js"></script>
    <script src="js/crypto.js"></script>
    <script src="js/cipher-core.js"></script>
<script src="js/aes.js"></script>
<script src="js/zero.js"></script>
    <title>ctfshow web入门 web19</title>
</head>
<body>
    <form action="#" method="post" id="loginForm" >
            用户名:<input type="text" name="username"><br>
            密  码:<input type="password" name="pazzword" id="pazzword"><br>
            <button type="button" onclick="checkForm()">提交</button>//这行表示提交的密码要经过checkFrom这个方法之后才存储
        </form>
</body>
<script type="text/javascript">
//checkFrom方法
    function checkForm(){
        var key = "0000000372619038";//密钥
        var iv = "ilove36dverymuch";//偏移量
        var pazzword = $("#pazzword").val();
        pazzword = encrypt(pazzword,key,iv);//pazzword密码加密
        $("#pazzword").val(pazzword);
        $("#loginForm").submit();
        
    }
//加密算法
    function encrypt(data,key,iv) { //key,iv:16位的字符串
        var key1  = CryptoJS.enc.Latin1.parse(key);
        var iv1   = CryptoJS.enc.Latin1.parse(iv);
//AES加密
        return CryptoJS.AES.encrypt(data, key1,{
            iv : iv1,
            mode : CryptoJS.mode.CBC,//选择加密模式是CBC模式
            padding : CryptoJS.pad.ZeroPadding
        }).toString();
    }

</script>
    <!--
    error_reporting(0);
    $flag="fakeflag"
    $u = $_POST['username'];
    $p = $_POST['pazzword'];
    if(isset($u) && isset($p)){
        if($u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'){
            echo $flag;
        }
}
    -->
</html>

要想得到flag,有两种方法:

法一:解密AES算法

将得到的明文传入,使其经过AES加密之后的结果为'a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'。也就是说,解密密文'a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04',将得到的明文传入pazzword即可得到flag。

建议看不懂的同学看看上面给出的代码注释,我们找一个AES解密网站

 将得到明文

 i_want_a_36d_girl

username:admin

pazzword:i_want_a_36d_girl

传入即可得到flag

 法二:前端绕过js,直接传参

密码是通过JS.AES进行了加密存放,因此我们只需要通过post方法,绕过前端验证对用户名和密码进行提交就可以获得Flag如下:

20、web20 数据库mdb文件泄露

老规矩,先扫一下:

 但是访问这个目录得到的却是forbiden,经过了解发现:

早期 asp+access 架构的数据库文件为db.mdb ,所以访问 /db/db.mdb 下载一个文件。在文件中就拿到了flag

 至此,信息搜集二十道题目全部做完啦,做了一天感觉好有成就感呐!!!


原文地址:https://blog.csdn.net/m0_74312676/article/details/142516721

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!