ctfshow 爆破(web入门)

目录

web21

 web22

web23

web24

web25

web26

web27

web28


web21

打开题目显示要登陆密码

 随便输入123,123抓个包试试,发现Authorization:有一串字母,拿去base64解码试试

 发现是我们刚输入的账号密码

 所以爆破点有了,发送到测试器

清除 §,然后在爆破点加上§

 接着在payload这里直接载入从题目下载的字典

 接着在有效负载处理那里添加前缀

 再添加一个base64编码,同时取消勾选下面的url编码字符

 接着到选项这里,调一下请求引擎,线程数建议别调太大,我前面调了200试了几次都没爆出来

 爆破结束后查看就可以了

 web22

em..............这题的话作者只是想让我们明白一个思路,看到一个站群,它有时候会隐藏的一些子域名,我们可以去通过在线子域名查询这个网站的工具去爆破的。flag的话直接查看hint

web23

点进题目发现是一串代码......这里要满足条件才可以输出flag。

 对于这种,我们可以把需要满足的条件复制在本地中调试,得出适合的值。

 可以看到得到两个满足的值422和1202,我们随便传一个就可以了。

web24

查看一下题目,令$r的整数值等于随机数mt_rand()产生的整数值,所以这题的话考点是伪随机数。

mt_srand(seed)    //播种Mersenne Twister 随机数生成器。
mt_rand()    //生成随机数

 简单地说就是mt_srand()分发seed种子,然后种子有了后,靠mt_rand()生成随机数。

我们来代码测试一下

这是第一次的运行结果 

我们删掉一个mt_rand()试试,让它生成两个随机数。

 这时候可以看到了,当种子不变时,产生的随机数是一样的,这就是伪随机数漏洞。所以这道题我们可以传一个r=1155388967,即传第一个种子产生的值,二者相等输出flag。

更深入的可查看这篇博客Web中的随机数安全总结 - 简书 (jianshu.com)

web25

第二十五好玩了,这是一个伤心的故事。题目的逻辑是用get方法传一个r,mt_srand(seed),seed的值为md5加密$flag的前八位字符,并将加密后的值十六进制转换为十进制。

然后判断是否有rand,如果有rand的值则输出$rand;没有则进行$_COOKIE['token']==(mt_rand()+mt_rand())的比较,等于则输出flag。

解法:

我们可以传r=0让其输出第一个mt_rand()的值为625400613,通过php_mt_seed来爆破出种子

php_mt_seed - PHP mt_rand() seed cracker (openwall.com)

下载后在kali解压,如果寻求便利的话可以直接解压到桌面,右键直接打开终端

第一次运行需要先输入make命令,然后输入命令./php_mt_seed +随机数就可以查种子了

 然后这题的话抓包重新发送查看响应可以发现这是php7.3版本

 那么上面爆破出来的种子只有一个7.1+的

 我们到本地(php版本5.4)调试一下输出,得到我们要传的第二个第三个mt_rand()相加的值。

关于为什么第一个mt_rand()的值为什么与题目不一样这个问题,可能是由于版本差异造成的,不同版本下同一个mt_srand(seed)种子产生的mt_rand()的值可能不同。

 在bp传r=625400613,传这个值的原因是得到第一个mt_rand()的值为625400613,然后r-mt_rand()=0满足!$rand,才可以进行下一步$_COOKIE['token']的比较

web26

这题的话题目提示可以爆破,em......我爆破了一段时间没有爆破出来,然后就去看看源代码有什么东西

 我们尝试在checkdb.php中post几个值试试,发现flag在这里

web27

这题是一个登录系统,先看一下有什么信息,发现有一个录取名单和学生学籍信息查询系统

我们点击录取名单发现弹出一个下载文件,下载后打开发现名字还有缺失的身份证号,暂时还不知道有什么用

 接着继续点学生学籍信息查询系统看看,看到这个界面,联系上面得到的文档,好像可以爆破出学生的的身份证号从而完成查询。

我们输入一下web专业同学的名字(高先伊)加身份证号,中间未知的部分随便打,我们在bp抓包试试,这里有个细节,当你点击第一次查询的时候bp抓到了包,但是我们查看bp没有我们输入的部分

这时候我们返回学籍信息查询界面再点一次查询 ,同时返回bp点击放包就可以看到我们输入的东西,爆破点就找到了。

 发送到intruder爆破,到这里就是我们的常规操作了,重要的是字典怎么找,首先说一下别人的简便方法吧。在位置这个地方,先清除§,然后在身份证号年月日那里添加§。

 然后再payload(有效载荷)这里,类型选择日付(dates),改成这个样子确定范围

 调好之后开始攻击后面查看结果得到的东西猜测是学号

然后教务系统的初始密码一般是身份证号,我们登录试试

对于字典的话,我们可以在kali用crunch这个工具制作字典,打开终端后输入命令

crunch 18 18 -t 621022199%%%%%5237 -o 1.txt  

讲一下上面的命令:

crunch的命令格式:

crunch <min-len> <max-len> [<charset string>] [options]

我们用-t命令中的%表示数字未知数 ,-o 1.txt,指定输出文件的名称。

   我们得到输出的文件后从虚拟机复制到主机,然后载入就可以爆破了

 查看长度,发现有一个长一点的

点进去查看响应,猜测这是学号

想深入了解一下crunch的使用可以看看这篇博客(56条消息) crunch命令详解 以及使用方法(综合我的经验)_AbonRommel的博客-CSDN博客_crunch

web28

这题题目提示大海捞针,点进去一看,确实想不到爆破点在哪,然后想啊想可能上面url那里存在问题,但我想到了爆破2.txt那里.............实际上是爆破/0/1/这个地方,爆破的时候要删去2.txt

 用bp抓包之后发送的intruder,使用集束炸弹(clusterbomb)模式,不懂这几个模式区别的可以去搜一下博客看看burpsuite中intruder模块爆破的四种模式_liweibin812的博客-CSDN博客_burp intruder 模式

然后清除cookie中的§,删去2.txt,同时在/0/1/那里加上§

下一步调有效载荷(payload),有效载荷类型选择数值(numbers),同时在下面调成从0开始到100,增量为1。

 切换到有效负载集(payload set)2,也是同样的调法

 接下来开始爆破等结果就好了,结果的话具有一点迷惑性,无论是升序还是降序,前面很多个的长都是一样的,但细心一点,调成升序后一直划下来看看,发现有一个的长特别点,和其它的不一样(下面最后一张图)。

 

 

 

 确实很符合大海捞针这个提示

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值