CTF.SHOW
信息搜集
参考:https://blog.csdn.net/a597934448/article/details/105431367
web1
右键查看源码得到flag
web2
无法右键和F12查看源码,复制view-source:
web3
响应头中flag
web4
都没有找到
看提示是/robots.txt
访问得到
直接访问获得flag
web5
源码泄露
访问index.phps获得源码
web6
源码泄露
dirsearch扫出www.zip
解压得到源码,flag不是解压出来的flag,网站访问才是
web7
源码泄露
dirseach扫出./git/
web8
./svn
web9
vim缓存信息泄露
index.php.swp
web10
cookie中gflag
web11
域名隐藏flag
通过dns检查查询flag https://zijian.aliyun.com/ TXT 记录,一般指为某个主机名或域名设置的说明。
web12
直接admin访问后台
账号应该为admin
通过题目描述知道密码应该在网站上
尝试几次为最下面的Number
web13
在网站下方找到document文档打开pdf得到
url访问,登录得到flag
警示:技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码
web14
- 小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录
通过网页源代码找到editor目录
这里我通过编辑器的图片上传功能找到flag(其他很多接口也行)
直接访问获得
web15
访问admin,发现有忘记密码选项
密保为地址
通过网站上的QQ邮箱搜索QQ
发现在西安
重置得到密码,用admin账户登录得到flag
web16
考察PHP探针php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡 流量、系统负载、服务器时间等信息。 url后缀名添加/tz.php 版本是雅黑PHP探针,然后查看phpinfo搜索flag
/tz.php访问探针网站
找到phpinfo可以进入
在环境配置中找到flag
web17
要找到http://ctfer.com/的真实ip
站长工具ip错误,ping ip错误
原来是www.ctfer.com QAQ
站长工具和ping都可以
web18
直接查看源代码
找到js文件中的胜利条件
用unicode解码得到
访问110.php得到flag
web19
访问源代码审计
即AES加密后为a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
将key和iv(偏移量)拿去AES解密得到password=i_want_a_36d_girl
提交得到flag
web20
mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
dirseach 扫到/db/db.mdb
下载文件通过txt打开搜索flag
爆破
web21
考点tomcat 认证(即网页弹出的窗口)
通过爆破模块的迭代器
自定义迭代器可以自定义拼接方式,position的位置即为我们的拼接方式,用户名:密码
需要进行base64编码;payload processing 进行编码设置\
取消Palyload Encoding编码 因为在进行base64加密的时候在最后可能存在 == 这样就会影响base64 加密的结果
爆破登录得到flag
web22
1.通过BP爆破子域名即可
*.ctfer.com
2.得到flag.ctfer.com
得到flag
web23
审计代码
#php脚本
<?php
error_reporting(0);
function getrandstr($length){
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
$randStr = str_shuffle($str);//打乱字符串
$rands= substr($randStr,0,$length);//substr(string,start,length);返回字符串的一部分
return $rands;
}
while (True){
$token_old = getrandstr(2);
$token = md5($token_old);
if (substr($token, 1, 1) === substr($token, 14, 1) && substr($token, 14, 1) === substr($token, 17, 1)) {
if ((intval(substr($token, 1, 1)) + intval(substr($token, 14, 1)) + substr($token, 17, 1)) / substr($token, 1, 1) === intval(substr($token, 31, 1))) {
echo $token_old,' md5:',$token;
break;
}
}
}
?
# python脚本
import itertools
import hashlib
zimu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
for i in itertools.product('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890', repeat=3):
blast = ''.join(i)
md5_ins = hashlib.md5((str(blast)).encode('utf-8'))
md5 = md5_ins.hexdigest()
if md5[1:2] not in zimu and md5[1:2] == md5[14:15] and md5[14:15] == md5[17:18] and md5[31:32] == '3':
print('1:',blast,':',md5)
php更快,python更稳
web24
mt_scrand(seed)
这个函数的意思,是通过分发seed种子,然后种子有了后,靠mt_rand()生成随机 数。
提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数 因此不需要播种,并且如果设置了 seed参数 生成的随机数就是伪随机数,意思就是*在同一进程中,同一个seed,每次通过mt_rand()生成的值都是固定的
所以先拿去本地执行,得到1155388967,直接传参得到flag
web25
先通过r=0 得到mt_rand()第一个值为1913130930
通过php_mt_seed进行逆推,得到种子
这题看响应头可以知道php版本为7.3.11
所以种子应该是1642142316
<?php
mt_srand("1642142316");
echo mt_rand()."<br>";
echo mt_rand()."<br>";
echo mt_rand()."<br>";
echo mt_rand()."<br>";
echo 1156227042+122859905;
# 1913130930
# 1156227042
# 122859905
# 270595885
# 1279086947
cookie发送token得到flag
web26
在安装数据库界面发现js代码,对传参没有要求
构造得到flag
web27
和上题几乎一样的js
但是不能直接伪造请求flag
1.下载录取名单
2.通过查询系统爆破
3.可以发现中间正好少了出生年月日
4.成功后看回显,知道学号以及密码为身份证号码
5.登录得到flag
web28
1.通过原始url知道爆破目录
2.爆破
3.访问得到flag