首页
社区
课程
招聘
[原创][新手向] BP爆破详解——PHP+phpStudy+MySQL自搭后台实现自用的爆破平台
发表于: 2020-5-14 16:46 2107

[原创][新手向] BP爆破详解——PHP+phpStudy+MySQL自搭后台实现自用的爆破平台

2020-5-14 16:46
2107

这是一个课程项目,老师让做一个实验,我就想到这个,因为我自己第一次感受到开始对网安感兴趣就是暴破了一个网站,因为牵扯到很多的技术链,虽然都不是很难,但是也挺麻烦的。用老师的话说就是:


跟我合作的另一位同学是郭老板:https://bbs.pediy.com/user-post-876577.htm

好,闲言碎语不要讲,我们进入主题。

本实验以自行搭建一个叫做“FoundLove”的平台为实验环境,使实验人员熟悉本地渗透测试环境的简易搭建流程,了解phpStudy的配置方法和Burpsuite的Intruder使用方法。之后要求实验人员跟随实验手册一步一步尝试使用Burpsuite对此平台进行弱口令爆破从而熟悉此类攻击方式。

Burpsuite:Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。使用前需要配合实验中使用的浏览器设置代理。

可以从这里下载:https://blog.csdn.net/weixin_43811883/article/details/90272016

phpStudy:phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。现在改了新版还挺好用的,叫小皮系统。

可以从这里下载:https://www.xp.cn/

下载网站源码,是我根据git上一个大神的框架改了改写的(原框架中有验证码,我那部分这个系统中暂时不用我就注释掉了),foundlove 可以从git上下载:https://github.com/WayneDevMaze/foundlove.git ,如果git速度慢,可以从附件下载。

php创建网站(在这之前先启动MySQL和Apache),设置域名并导入web工程,域名我设置的是foundlove


数据库创建:当然上一步也可以勾选创建数据库,这里就省掉第一步,从第二步开始(不过不建议这么做,数据库最好自己创建,使环境更干净):

通过phpstudy进入mysql主页,然后按图中顺序,新建foundlove数据库。

构建一个叫做users的表,并令其字段数为3,点击执行。

将三个数据如图设置,然后保存


访问验证,看看环境是否成功:

访问域名:

如果正常显示表明phpstudy网站搭建成功,然后在Register地方注册一个新账户,foundlove@outlook.com, 密码014523,如果反馈注册成功,则说明数据库连接成功,可以开始下一步实验。

首先是welcome首页,可以看到在底部轮播滚动的图片上,标有个人公开信息,也就是说,我们可以从这里知道:用户邮箱和编号,在相亲网站中,这种操作是很常见的。

然后进入注册查看一下,注册的时候会不会有有用的对密码的规则信息:

可以看到,并没有太多有用的信息,但是经过一些尝试,虽然知道了注册的时候密码至少六位,但是没有提供实质性的思路。

于是乎,来到第三个导航栏标签登录 ”Login” ,发现跟注册一个很大的不同就是,有忘记密码选项:

这里面一般情况下就会包含有跟密码相关的信息,点进去之后发现果然:

在注意事项的最后一条,很明显可以看到,ID(也就是最一开始我们看到的编号)是相亲现场分配的,密码则是身份证后六位。

至此,已经可以确定的是:

Ø  登录时需要两个信息:邮箱和密码;

Ø  密码的规则是身份证后六位;

在首页轮播中,选中一位用户,可以看见其邮箱为:foundlove@outlook.com,我们选定这个账户为攻击目标。(这里是因为我们一开始弄得账号是这个邮箱,如果自己用的别的,可以尝试爆破别的)

构建密码本:按理来说六位数可以生成10的6次方个数,也就是1000000,但是因为是身份证后六位,所以有所区别:

 前两位是日期,所以一定是 ”01-31” 之间的数;

 倒数第二位是性别验证,如果能知道攻击目标的性别,这里一下也可以去掉一半的无效密码字典,但是这里并没有明确知道性别;

 最后一位校验位可能出现X,但是概率很小,而且密码设定的时候,X通常会用某数代替,比如说0;

现在规则说清楚了之后,可以开始写脚本生成密码本:

Python:

在id_number.py文件中构建如下代码:

然后在控制台运行(这一步在Linux和Windows环境下操作相同),python  id_number.py,即可生成密码本passwords.txt

 

现在,目标账户已经锁定,并且知道用户ID和注册邮箱,然后密码本已经生成,接下来就正式进入爆破阶段,在此之前,需要设置一下Burp suite(BP),关于BP在工具阶段已经介绍了,这里就直接开始网络代理设置部分的介绍:

使用火狐浏览器,打开新标签,并输入:about:preferences,在常规这一部分,滚到最下方有个网络设置

点击进入,选择手动代理配置,并且把内容配置成如图,目的是使用127.0.0.1代理,这样就可以在bp进行拦截,相当于每次传输都要经过bp,这样我们就可以利用bp对传输信息进行分析利用:


接下来进入bp的proxy一栏,打开intercept,显示如图:


在火狐浏览器打开Found Love的网站,在Login登录选项随机输入密码,如果bp效果如下图,则代表设置成功

此时我们看到的Raw里的内容就是传输的包,我们分析一下,很明显可以看到,

最后一行有两块可疑内容:email和password,57657456就是刚刚随机输入的密码,如果能够把这一块进行设置,加上密码本就能找出密码,点击Action,进入Send to Intruder。

接下来就是爆破的核心几步:

    (1)进入Intruder,可以看到target部分已经预设好,这里就不需要再管了,因为这是从之前截获的包里提取出来的;

    (2)进入positions,还记得我们一开始说的值得怀疑的地方吗?这里可以看到,bp已经帮我们加了§括起来,但是除了怀疑的password别的也在括起来了。

这里需要说明的就是,bp把所有可变因素都给括起来的,我们只需要password是可变的,因此可以选中不需要的元素,然后用Clear§按钮去掉§符号,如图:

    (3)需要额外说明,最上方的attack type:

① Sniper(狙击手模式)

针对单一密码,假设确定了两个位置A和B,然后密码包payload里有两个密码1、2,那么攻击模式如下:

Attack No.

Position A

Position B

0

1

Null

1

2

Null

2

Null

1

3

Null

2

一次只会对一个位置进行攻击!

② Battering ram(攻城锤模式)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-5-14 17:02 被张公子T40编辑 ,原因: 格式更新
上传的附件:
收藏
免费 2
支持
分享
最新回复 (6)
雪    币: 8111
活跃值: (6384)
能力值: ( LV12,RANK:207 )
在线值:
发帖
回帖
粉丝
2
感谢大佬分享
2020-5-14 16:49
0
雪    币: 403
活跃值: (798)
能力值: ( LV4,RANK:58 )
在线值:
发帖
回帖
粉丝
3
学习了,总结的很到位
2020-5-15 10:59
0
雪    币: 573
活跃值: (1009)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
逆向不香了吗
2020-5-15 19:00
0
雪    币: 212
活跃值: (956)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢大佬分享,萌新学到了很多
2020-5-16 11:00
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES) in C:\phpstudy_pro\WWW\Foundlove\admin\Register.php on line 20

注册时提示这个要如何处理?
2020-5-28 10:15
0
雪    币: 2588
活跃值: (1332)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
mb_icimlqkj Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using passw ...
应该是数据库密码错误导致的,在文件config.php文件里有:
define('DB_USER', 'root');
define('DB_PWD', 'root');
分别是数据库的用户名和密码,你进PHP study看一下,有个数据库那一栏,进去之后可以修改root密码,保证这里的和config.php里的一致就好了。
2020-6-3 11:07
0
游客
登录 | 注册 方可回帖
返回
//