CTFshow web入门——爆破

web 21

一.涉及工具:
burp suit burp suit 使用教程
二.解题思路:
1.随便输一个密码和用户名抓包一下
在这里插入图片描述2.base64解密一下发现账号密码的形式为 账号:密码,根据题目提示我们用自定义迭代器爆破,使用方法参考:Custom iterator的使用

注:下面爆破用的字典是题目所提供的

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述3.爆破出结果
在这里插入图片描述

web 22

一.涉及知识点:
子域名爆破(此题不能爆破出来)在线子域名爆破
二.解题思路:
直接点开View Hint(提示)即可得到答案

web 23

一.涉及工具:
python
二.解题思路:
1.打开可以看到php代码,首先分析代码,可以知道 token被md5加密,且它的第一位=第十四位=第十七位,(第一位+第十四位+第十七位)/第一位=第三十一位

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

}
?> 

2.由此我们可以知道要运用爆破,可以使用burp suit,也可以直接写脚本,下面附上脚本代码


import requests

a = "3abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012456789"
for i in a:
    for j in a:
        url ="http://5aad3711-167d-4268-94b4-3bb1a93ae1f0.chall.ctf.show/?token="+str(i)+str(j)
        req = requests.get(url=url).text
        if "flag" in req:
            print(req)
            exit()
        else:
            print(url)
#3i

注:要在python里事先下好requests包

运行即可得到flag.

web 24

一.涉及知识点:
伪随机数
二.解题思路:
1.可以看到mt_srand()函数即可知道是伪随机数

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

2.下好php_mt_seed这个工具,写个php脚本运行一下

<?php

mt_srand(372619038);

echo mt_rand();

?>

注:php可以在kali中运行
例:php 1.php

3.可以得到1155388967,构造payload

?r=1155388967

即可得到flag

web 25

一.涉及工具:
php_mt_seed下载地址
二.解题思路:
1.分析php代码,可以先通过r=0 得到mt_rand()第一个值为539472865(每个人得到的数字不同)

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

2.之后我们进行逆推,推出种子
在这里插入图片描述3.通过如下代码,我们知道要将两个随机数相加得token值

if($_COOKIE[‘token’]==(mt_rand()+mt_rand()))

可写脚本如下

<?php
mt_srand(3232931109);
echo mt_rand()."\n";
echo mt_rand()+mt_rand();

注:代码中的种子数是一个个试出来的

4.代码运行后可得token=3631956516
在这里插入图片描述5.可用burp suit抓包修改一下即可得到flag另一种方法
在这里插入图片描述

注:
关于这里为什么要?r=539472865,因为

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

只有在rand不存在时,_COOKIE[‘token’]==(mt_rand()+mt_rand() 才能执行,而539472865是我们在传?r=0时页面输出的随机数,此时的rand = mt_rand()即第一个生成的随机数,因此只要我们使r=mt_rand()=1819399594,就能让$rand=0,不存在,从而执行接下来的代码

web 26

一.涉及工具:
burp suit
二.解题思路:
1.查看源代码

<script>

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

		});
		}


	</script>

2.尝试POST后返回json文件,抓包既得。
在这里插入图片描述

web 27

一.涉及工具:
burp suit
二.解题思路:
1.点击录取名单下载下来,发现身份证号都少了8位
在这里插入图片描述2.爆破查询系统
在这里插入图片描述在这里插入图片描述在这里插入图片描述
3.Unicode编码转换成中文
在这里插入图片描述4.根据他的提示输入学号和密码得出flag

web 28

一.涉及工具:
burp suit
二.解题思路:
1.题目给出提示

通过暴力破解目录/0-100/0-100/看返回数据包
爆破的时候去掉2.txt 仅仅爆破目录即可

2.根据提示进行爆破
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值