目录
感觉做了题目,但是没有一个系统化的练习,下次遇到的时候还是做不出来,于是在做了一番思想斗争之后,还是开通了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
至此,信息搜集二十道题目全部做完啦,做了一天感觉好有成就感呐!!!