ctfshow web入门(21-28爆破)

web21

抓包

进行了base64加密,解码后发现账号和密码格式是

账号:密码

爆破

位置一开始选错了,应该是不含Basic的

模式选择custom iterator(自定义迭代器)
自定义迭代器可以自定义拼接方式

分别设置三个位置,第一个位置为admin

 

第二个位置为:

第三个位置

导入他下载的字典

选择base64解密 ,去掉url编码

web22

域名也可以爆破的,试试爆破这个ctf.show的子域名

环境没了

web23

还爆破?这么多代码,告辞!

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

变量 token 被 md5 加密,且它的第一位 = 第十四位 = 第十七位,化为整数后(第一位 + 第十四位 + 第十七位)/ 第一位 = 第三十一位,则可获得 flag。

<?php
for($i=0;$i<10000;$i++)
{
	$token = md5($i);
    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='.$i.'&'.'md5='.$token;
        }
    } 
}
?>

得到token为422

传参

web24

爆个🔨

环境

e第一次看到这个函数,还以为是他打错了哈哈哈哈

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');
} 

主要参考CTF_Web:php伪随机数mt_rand()函数+php_mt_seed工具使用_星辰照耀你我的博客-CSDN博客

简单来说就是说如果有mt_srand函数的话,就是有了种子,生成的随机数是固定的。但是如果没有这个函数,随机数每运行一次都会发生改变

题目就是要让r等于生成的随机数

ok了

web25

爆个🔨,不爆了

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');
} 

 没有给出seed,所以我们需要通过工具推出seed

php_mt_seed

拖进kali,解压

make

随便传个参,r=0

输入 ./php_mt_seed 随机数 ,开始爆破。

发现有很多个seed,查看网络看一下php的版本

看到php的版本是7.3,所以可能的种子就是2166812886和2550700805

 写个脚本,试了第一个种子不行。

第一个得到的是r,第四个是cookie的token

因为只有在$rand不存在时,$_COOKIE['token']==(mt_rand()+mt_rand() 才能执行,而1722723182是我们在传?r=0时页面输出的随机数

此时的$rand = mt_rand()即第一个生成的随机数,因此只要我们使$r=mt_rand()=1722723182,就能让$rand=0,不存在,从而执行接下来的代码

web26

这个可以爆

打开

开始安装,跳转到了install.php

查看页面源代码

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']);
			}

		});
		}

没懂

'a':$('#a').val()是一个 JavaScript 代码片段,其中使用了 jQuery 库的语法。

  • $ 符号是 jQuery 库的别名,用于选择 HTML 元素。
  • $('#a') 表示选择具有 id 属性为 "a" 的 HTML 元素。
  • .val() 是 jQuery 提供的一个方法,用于获取元素的值。
  • jQuery 是一个 JavaScript 库。

所以,'a': $('#a').val() 这段代码的意思是获取具有 id 为 "a" 的 HTML 元素的值,并将其作为键 "a" 的值。通常这是在处理表单数据时使用的,可以获取用户在输入框中输入的值。

https://www.cnblogs.com/peterzhangsnail/p/10054533.html

这里就是第一种

审计一下代码,因为正确和错误都是返回一样的msg,所以这几个参数可以随便给,但是如果要过pass的值,u的值就一定要为admin

web27

CTFshow菜鸡学院招生啦!

ok 打开是个登录平台

下面有录取名单,意思就是要爆破随便一个人的身份证中间出生年月日

点击学籍查询系统

用火狐抓不到post的包,用了谷歌

抓到包,a和p参数

要爆破p中间几位,选择位置,以及爆破方式

uncode解码

ok登陆成功

web28

大海捞针

打开,确实有点奇怪/0/2

一样抓包一下

选择爆破的位置,以及爆破的方式要换成cluster bomb

 两个位置都选numbers,步长为1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值