ctf.show web入门(爆破) 21~28

目录

web21

web22

web23

web24

web25

web26

 web27

web28


本文疯狂参考huamanggg师傅

web21

题目给了一个压缩包,有弱口令字典我们就抓包

 并没有显示 账号密码的明文,而是用圈红地方的base64表示的,转码之后得到就是

admin:123 也就是我输入的账号密码 中间还有个冒号

Hint:

考点tomcat 认证爆破之custom iterator使用 tomcat 认证爆破之custom iterator使用 - 007NBqaq - 博客园 下载密码字典抓包,通过burpsuite暴力破解

Payload set ---->custom iterator(自定义迭代器)

三个部分分别导入,第一个账户admin 第二个冒号:其实可以合并到第一个 第三密码字典

 

 

需要进行base64编码;payload processing 进行编码设置 

 

取消Palyload Encoding编码 因为在进行base64加密的时候在最后可能存在 == 这样就会影响base64 加密的结果 

 

 开始爆破就行,时间还是挺久的,这题也可以使用爬虫脚本

web22

http://flag.ctfer.com/index.php

 页面已经失效了

web23

<?php
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__);

}
?>

 可以知道要GET 一个 token值 满足以上条件 ,很多函数不了解 ,去学习一下

isset() — 检测变量是否设置

substr函数格式 (俗称:字符截取函数)
格式:    substr(string string, int a, int b);

              1、string 需要截取的字符串

              2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)

              3、b 要截取的字符串的长度

intavl() 获取变量的整数值

 变量token被md5加密,第一位=第十四位=第十七位,

化为整数后(第一位+第十四位+第十七位)/第一位=第三十一位

 脚本附上,只判断了第一个条件,然后一个一个试 3j 是对的

import  hashlib
a ='0123456789abcdefghijklmnoqprstuvwxxyz'
for i in a:
    for j in a:
        t=(str(i)+str(j)).encode()
        md5=hashlib.md5(t).hexdigest()
        if md5[1:2]==md5[14:15]==md5[17:18]:
            print(t)


url后面加 /?token=3j ,就出来 了

 

web24

error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(372619038);
    if(intval($r)===intval(mt_rand())){
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

mt_srand([ int $seed] ) : void

用 seed 来给随机数发生器播种。 没有设定 seed 参数时,会被设为随时数使用者在进行一次mt_srand()操作后,seed数值将被固定下来,给接下来的mt_rand()函数使用。

当种子不变时,实际上生成的随机数是固定的。而这就是伪随机数漏洞,部分ctf题便以此为考点 

看到mt_srand()函数即可知道是伪随机数,每次生成的随机数是一样的

那我们就来跑一下题目里的mt_srand(372619038)

<?php
mt_srand(372619038);
echo mt_rand();

 url 后传入 /?r=1155388967

web25

error_reporting(0);
include("flag.php");
if(isset($_GET['r'])){
    $r = $_GET['r'];
    mt_srand(hexdec(substr(md5($flag), 0,8)));
    $rand = intval($r)-intval(mt_rand());
    if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }
    }else{
        echo $rand;
    }
}else{
    highlight_file(__FILE__);
    echo system('cat /proc/version');
}

 分析一下代码

$rand = intval($r)-intval(mt_rand());
    if((!$rand)){
        if($_COOKIE['token']==(mt_rand()+mt_rand())){
            echo $flag;
        }

 if((!$rand)) 表示 $rand==0,

$rand = intval($r)-intval(mt_rand()); 就是0,那么可知 $r==mt_rand 

并且COOKIE 中传入的值token是 mt_rand()+mt_rand()

 因为生成的随机数可以说是一个线性变换(实际上非常复杂)的每一次的确定的但是每一次是不一样的,所以不能 进行第一次*2就得到mt_rand()+mt_rand() 使用说只要我们得到种子就可以在本地进行获得自己想要的值 解题

通过随机数来寻找种子 我们让 ?r=0 得到随机数 

用php_mt_seed反解可能存在的seed值,先下载php_mt_seed到kali里面

 先输入make ,然后 ./php_mt_seed 随机数

可以看到爆破出几个seed, 1151008722 和1151008723和2282896958和3159902748

写段代码挨个试,可以看到当seed值是3159902748,返回了我们想要的 随机数

 得到了种子是3159902748,就可以请求两次并求和得到token的值了

 r=1416823701  ,token=811521195

抓包修改参数就行了 ,注意别超时我就是超时题目环境结束了

web26

 源码中 提示访问checkdb.php,以post方式提交参数a、p、d、u、pass

根据提示输入后,显示失败,去爆破一下密码,但是直接空表单点击安装 就成功了,直接空就行了,也就是说直接抓包然后Go就出来了,这应该是出题时候代码逻辑的问题

(正常写法需要爆破出正确密码,也一样)

 但是我这里一直抓包老不成功,抓的很难受,用Chrome 终于是成功了

 web27

录取名单,身份证加密的正好是生日 

 

 看来是要爆破出来身份证号,抓包又抓半天 

看了师傅们的wp 知道可以在burp里面的date模块爆破出日期,也可以直接爆破数字

 应该就是19911016 ,

 登陆就行了

web28

Hint:

通过暴力破解目录/0-100/0-100/看返回数据包

爆破的时候去掉2.txt 仅仅爆破目录即可

跟据提示走,爆破目录去掉2.txt, 设置从0~100,用的Cluster bomb集束炸弹

 要跑很久,过了一会出来了,

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值