ctfshow-爆破

burpsuite中intruder模块基础

Burpsuite模块—-Intruder模块详解 – 渔夫安全 – 博客园 (cnblogs.com)

Burp Intruder主要有四个模块组成:

1:Target 用于配置目标服务器进行攻击的详细信息。 2:Positions 设置Payloads的插入点以及攻击类型(攻击模式)。 3:Payloads 设置payload,配置字典 4:Opetions 此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。

1:Target 目标选项(Target tab)

这个选项是用来配置目标服务器的细节:

img

2:Positions 位置选项(Positions tab)

这个选项是用来配置在攻击里产生的所有 HTTP 请求的模板:

img

3:Payloads 有效负荷选项(Payloads tab)

这个选项是用来配置一个或多个有效负荷的集合。如果定义了”cluster bomb”和”pitchfork”攻击类型,然后必须为每定义的有效负荷位置(最多8个)配置一个单独的有效负荷。使用”payload set”下拉菜单选择要配置的有效负荷。

选项1:Payload Sets Payload数量类型设置

选项2:Payload Opetions[Simple list] 该选项会根据选项1中Payload type的设置而改变

img

选项3:Payload Processing 对生成的Payload进行编码、加密、截取等操作

img

选项4:Payload Encoding 你可以配置哪些有效载荷中的字符应该是URL编码的HTTP请求中的安全传输。任何已配置的URL编码最后应用,任何有效载荷处理规则执行之后。 这是推荐使用此设置进行最终URL编码,而不是一个有效载荷处理规则,因为可以用来有效载荷的grep选项来检查响应为呼应有效载荷的最终URL编码应用之前。

img

4:Opetions 选项卡(Options tab)

此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。

选项1:Request Headers 这些设置控制在Intruder是否更新配置请求头。

img

选项2:Request Engine 设置发送请求的线程、超时重试等。

img

选项3:Attack Results 设置攻击结果的显示。

img

选项4:Grep – Match 在响应中找出存在指定的内容的一项。

img

Burp Suite Intruder的4种攻击类型

Sniper(狙击手模式)

狙击手模式使用一组payload集合,它一次只使用一个payload位置,假设你标记了两个位置“A”和“B”,payload值为“1”和“2”,那么它攻击会形成以下组合(除原始数据外):

attack NO.location Alocation B
11no replace
22no replace
3no replace1
4no replace2

Battering ram(攻城锤模式)

攻城锤模式与狙击手模式类似的地方是,同样只使用一个payload集合,不同的地方在于每次攻击都是替换所有payload标记位置,而狙击手模式每次只能替换一个payload标记位置。

attack NO.location Alocation B
111
222

Pitchfork(草叉模式)

草叉模式允许使用多组payload组合,在每个标记位置上遍历所有payload组合,假设有两个位置“A”和“B”,payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,则攻击模式如下:

attack NO.location Alocation B
113
224

Cluster bomb(集束炸弹模式)

集束炸弹模式跟草叉模式不同的地方在于,集束炸弹模式会对payload组进行笛卡尔积,还是上面的例子,如果用集束炸弹模式进行攻击,则除baseline请求外,如果payload组合1的值为“1”和“2”,payload组合2的值为“3”和“4”,会有2×2=4次请求:

attack NO.location Alocation B
113
214
323
424

web21

image-20210703143429842

进入页面后需要登录

image-20210703143502237

题目提示需要下载zip,里面有字典

bp抓包,发现抓取的包没有直接的用户名和密码

image-20210703143642205

但发现有一处像加密字符

Authorization: Basic YWRtaW46MTIz

base64解码

image-20210703143745212

正是输入的用户名和密码

所以需要对加密的字符串进行爆破

image-20210703144022237

1、首先需要载入下载好的字典

2、加入前缀 admin:

3、取消URL字符编码,因为base64中含有=会造成解码失败

web22

image-20210702124853119

提示爆破子域名

子域名爆破网站

在线子域名查询 (phpinfo.me)

image-20210702125242741

爆破出几个域名

挨个点进去

发现在vip.ctf.show的标签处有提示

web23

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 11:43:51
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 11:56:11
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

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

}
?>

代码审计类

读取代码

1、传入的token值,经过md5加密

2、加密后的md5,经过substr截取,下表从0开始读取,所以第1位为第个数字,第1位等于第14位并且第14位等于第17位

3、intval函数,获取变量的整数型。第1位+第14位+第17位÷第1位等于第31位

加密代码用PHP写,可以用PHP写逆转算法

<?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;}
}

}
image-20210703021118875

解出有多个token

image-20210703021142911

访问得到flag

web24

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:26:39
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 13:53:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

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

?>

代码审计

1、通过get方式传入参数r

2、生成随机数mt_srand(372619038)

3、如果传入参数r和生成随机数值一样,输出flag

依然改写PHP进行输出

<?php

mt_srand(372619038);
echo intval(mt_rand());

得到随机数值后,/?r=数值 ,得到flag

web25

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-03 13:56:57
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-03 15:47:33
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


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

代码审计

1、种子mt_srand值没有给出,但可以通过传入参数r设置为0,得到mt_rand的值,即随机数的值

2、通过判断!$rand=0后,再判断传入的cookie值token等于两个随机数,输出flag

image-20210703112038572

通过r设为0求出随机数值

image-20210703112203232

通过工具php_mt_seed逆求出PHP各版本的种子值

./php_mt_seed 1570160772

猜测题目环境的PHP版本为7.1.0+

那么种子值为 0x8949f82b

最后根据代码审计的结果,逆向写出PHP解法

<?php

mt_srand(0x8949f82b);

mt_rand();

echo mt_rand()+mt_rand();

输出的两个随机数之和,为cookie值

写入cookie里的token

image-20210703131114290

然后根据r=0得出的数值的绝对值,传给r

image-20210703131152268

这一步是确保!$rand不为0,r=1879496888时,$rand = intval($r)-intval(mt_rand())=0

经过!$rand取反后,不为0

image-20210703131418176

web26

进入界面,发现什么都没填写直接提交后提示连接成功

说明默认填写的数据是正确的,可以连接成功

查看源代码,发现有checkdb.php

image-20210703132403750

按照里面的变量post数据,即可连接成功返回flag

image-20210703132441446

web27

进入界面后是一个登陆界面

image-20210703133727792

点击录取名单,里面有人员信息

image-20210703133754713

但没有学号,其中身份证号码中间出生年月日被隐藏

再点击查询系统

image-20210703133843589

只要有姓名和身份证号码就可以查到学号

抓包用bp进行爆破

bp的intruder模块可以用出生年月日生成八位数字,并加上已知的前缀后缀数字进行爆破

image-20210703133614412

爆破出长度不一样的,查看返回包进行解码

image-20210703135921301

利用控制台console.log(” “)进行Jason解码

image-20210703140035307

然后利用爆破出的学号和身份证号码登录拿flag

image-20210703140244966

web28

登录页面,提示哪里存在flag

观察url,比较特别

image-20210703141023134

子目录为/0/1/

应该是对子目录进行爆破

抓包,删除末尾的2.txt,只对0、1爆破,选择cluster

image-20210703141258012

生成数字1-100,交替爆破,共10000次

image-20210703141435429
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇