信息搜集
- vim缓存 vim在编辑文档的过程中如果异常退出,会产生缓存文件,第一次产生的缓存文件后缀为.swp,后面会产生swo等…所以直接访问url/index.php.swp下载访问备份文件即可。
- 查看cookie
- 域名缓存 https://zijian.aliyun.com/
- 后缀admin,这个地方进入admin会被重定
- 技术文档为document.pdf,默认后台地址:http://your-domain/system1103/login.php 默认用户名:admin 默认密码:admin1103
- 后缀直接输入/editor,但是会自动去掉端口,而且没有https,选择上传文件,选择/var/www/html/nothinghere/fl000g.txt,然后原链接后缀加上/flag000g.txt进入
- 找到网页下面的邮箱,进入url+/admin,查询邮箱QQ号发现地址,忘记密码填写地址找到答案
- 网页探针,讲的什么是探针。进入后发现可以进入phpinfo,搜寻flag
- 直接ping ctfer.com
- 分析js,关注下面的代码,进入110.php找到flag
var result=window.confirm("\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b"); # var result=window.confirm("你赢了,去幺幺零点皮爱吃皮看看");
var result=window.confirm("GAMEOVER\n鏄惁浠庢柊寮€濮�");
- 前端会将密码以AES加密发送到后端,只要前段发送到后端加密过的密码和$p一样就可以。抓包修改发送的password为注释部分的密码即可获得。或者去进行AES加密获得
error_reporting(0);
$flag="fakeflag"
$u = $_POST['username'];
$p = $_POST['pazzword'];
if(isset($u) && isset($p)){
if($u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'){
echo $flag;
}
}
- 进入url/db/db.mdb,可以获得一个文件,使用记事本打开,直接搜flag
爆破
- 抓包发现admin:pasword是被base64加密过,直接爆破选择base64加密
- 域名也可以爆破的,试试爆破这个ctf.show的子域名,直接访问:http://flag.ctfer.com/index.php
php代码,subset:获取字符
intval:获取整数值get传参token,并进行md5加密
判断 第2位 === 第15位 并且 第15位 === 第18位
判断 (第2位整数值+第15位整数值+第18位整数值)/第2位整数值===第32位整数值,error_reporting(0); include('flag.php'); if(isset($_GET['token'])){ $token = md5($_GET['token']); 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 $flag; } } }else{ highlight_file(__FILE__); } ?>
跑脚本得到以下结果,测试得到3j正确,url/?token=3j得到结果[h]]1m 3j k0 kv ll mw[hi]
import hashlib dic = '0123456789qwertyuiopasdfghjklzxcvbnm' for a in dic: for b in dic: t = str(a) + str(b) md5 = hashlib.md5(t.encode('utf-8')).hexdigest() if md5[1:2] == md5[14:15] and md5[14:15] == md5[17:18]: print(t)
mt_srand(372619038)生成一个随机数
如果给r的参数等于随机生成的随机数则,获得flag[em] 注:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数 因此不需要播种,并且如果设置了 seed参数 生成的随机数就是伪随机数,意思就是每次生成的随机数 是一样的[/em]
<?php mt_srand(372619038); echo (mt_rand()); ?>
需要配置一下环境,php_mt_seed - PHP mt_rand() 随机数种子破解使用 随机数种子破解使用),配置完成后,传参使用r=0获得一个种子的负数,然后进行使用上面的程序编译运行得到该随机值的可能seed。这个时候会获得多个数字,观察网站的响应头发现是php7,使用获得的数字运行下面的代码获得token,burp添加cookie得到flag
<?php mt_srand(4059711086); echo mt_rand()."<br/>"; echo mt_rand()+mt_rand()."<br/>"; ?>
观察界面的script,发现需要在url/checkdb.php界面POST四个变量,使用Hackbar直接post[hi]a=&p=&d=&u=&pass=获得flag
function check(){ $.ajax({ url:'checkdb.php', type: 'POST', dataType:'json', data:{ 'a':$('#a').val(), 'p':$('#p').val(), 'd':$('#d').val(), 'u':$('#u').val(), 'pass':$('#pass').val() }, success:function(data){ alert(data['msg']); }, error:function(data){ alert(data['msg']); } }); }
PS:被这个题整麻了,进入界面发现了登录下面有录取名单和查询系统,下载名单进入查看到名字和损失的身份证号。进入查询系统发现需要名字和身份证号。直接爆破,成功后在rquest获得身份证号,在response获得学号。在登录界面输入身份证号和学号获得flag。
在抓包的时候,使用火狐会抓不到包,还有在最后输入的时候提示错误,最后莫名其妙就成功了。
- 直接对路径进行爆破,去掉2.txt,观察response获得flag
评论 (1)