DVWA - 第一关 Brute Force(暴力破解)

暴力破解原理

顾名思义 没什么好说的~

 

Low

isset( $_GET[ 'Login' ] )  

除了这句 其它的基本可以忽略.

 

而且他也并没有对其它的一些代码做什么处理

所以说这里使用万能密码即可

 

admin' or '1'='1

 

其实真实渗透 碰见这样的概率不大. 所以做个储备项吧.

 

Medium

首先我们先随意的尝试一下账号密码

Username and/or password incorrect.

提示这个. 正常碰见这样的站是会挑几个常用的账号去尝试爆破 因为这里也没有做什么防护

当然, 这个是靶场 我们知道他的账户是 admin

这里就要使用到我们的 渗透神器 BurpSuite 

首先我们进行抓包

 

 

如图 我们把截取到的数据发送到 Intruder 里

 

 

上图标注了所在的位置 至于这个 Clear 是清除掉所有变量. 因为我们这里 只需要替换一个 password 而已

 

 

 

如上图 选中 点 ADD

 

 

这里我们需要加载好字典. 网上大把的有啊.  这里其实可以直接点爆破了  框框里的那个地方可以设置线程响应时间等等 酌情吧

如果爆破的慢于正常速度. 请重启软件

 

 

 

全部都设置完毕后 点 start 进行爆破. 箭头所指向的 5  是线程的数量

 

 

很明显 这里的 password  的长度和其它的长度并不一样.  所以我们可以尝试下这个.  (这就是对的)

这种玩法. 其实在一些边缘资产里 或多或少会出现一些. 所以 这个技能还是get到的.

 

High

二话不说 我们看传参

 

 

 

这里多了一个 token .

那啥是 token 呢

token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

很明显这段我是复制的.  我们可以这样理解 我们需要获取到这个token 并传送给服务器 即可

token  一般多放在 前端. 有一些还会加密. 这个多少需要点 代码基础. 不过这个靶场比较简单. 

我们查询网页源代码 

 

 

 

抓包测试下 没错 就是这玩意了 

 

 

这个页面已经不陌生了吧. 另外  Pitchfork  那个箭头需要点一下 才可以看见.    另外Cluster bomb(是用于两个纯数字的变量)

 

 

 

这里先选择 Options  我们去设置一下获取 token

 

 

 

这里我们找到 Grep Extract 选择 ADD

 

 

 

 

完成后  继续向下拉  找到  Redirections 

 

 

 

 

选择 Always  即可. 就是每次都重新获取.这样理解就好

 

 

 

开始

 

 

可以看见每次 获取到的 token 都不一样, 把长度不一样的测试一下即可

 

impossible

其实这个我有去测试过. 用 python 加上代理池.就能够正常测试. 不过有没有必要这是个问题. 

有个写到一半的东西.  由于时间关系没有写完. 有空补上吧. 

import requests
import re


def tokens():
    url = 'http://192.168.0.104:804/vulnerabilities/brute/'
    headers = {
        'Cookie': 'PHPSESSID=gb181u08nr63g6tlt1vberskp3; bt=on; __typecho_lang=zh_CN; __typecho_config=YToxMzp7czo2OiJwcmVmaXgiO3M6ODoidHlwZWNob18iO3M6ODoidXNlck5hbWUiO3M6NToiYWRtaW4iO3M6MTI6InVzZXJQYXNzd29yZCI7czo3OiJhbHBoYS4wIjtzOjg6InVzZXJNYWlsIjtzOjI0OiJ3ZWJtYXN0ZXJAeW91cmRvbWFpbi5jb20iO3M6NzoiYWRhcHRlciI7czo5OiJQZG9fTXlzcWwiO3M6Nzoic2l0ZVVybCI7czoyNDoiaHR0cDovLzE5Mi4xNjguMC4xMDQ6ODg4IjtzOjQ6Imhvc3QiO3M6OToibG9jYWxob3N0IjtzOjQ6InVzZXIiO3M6NDoicm9vdCI7czo4OiJwYXNzd29yZCI7czo0OiJyb290IjtzOjc6ImNoYXJzZXQiO3M6NzoidXRmOG1iNCI7czo0OiJwb3J0IjtzOjQ6IjMzMDYiO3M6ODoiZGF0YWJhc2UiO3M6NzoidHlwZWNobyI7czo2OiJlbmdpbmUiO3M6NjoiSW5ub0RCIjt9; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_first_run=1; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_uid=1; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_authCode=%24T%24YmBc9wsWdb37a95cb23694b5c4675553ae541fc17; security=impossible'
    }
    response = requests.get(url, headers=headers).text
    token1 = re.findall("value='(.*?)'", response)
    t = token1[0]
    return t


def login():
    url = 'http://192.168.0.104:804/vulnerabilities/brute/index.php'
    data = {'username': 'admin',
            'password': 'password',
            'Login': 'Login',
            'user_token': tokens()
            }
    headers = {
        'Cookie': 'PHPSESSID=gb181u08nr63g6tlt1vberskp3; bt=on; __typecho_lang=zh_CN; __typecho_config=YToxMzp7czo2OiJwcmVmaXgiO3M6ODoidHlwZWNob18iO3M6ODoidXNlck5hbWUiO3M6NToiYWRtaW4iO3M6MTI6InVzZXJQYXNzd29yZCI7czo3OiJhbHBoYS4wIjtzOjg6InVzZXJNYWlsIjtzOjI0OiJ3ZWJtYXN0ZXJAeW91cmRvbWFpbi5jb20iO3M6NzoiYWRhcHRlciI7czo5OiJQZG9fTXlzcWwiO3M6Nzoic2l0ZVVybCI7czoyNDoiaHR0cDovLzE5Mi4xNjguMC4xMDQ6ODg4IjtzOjQ6Imhvc3QiO3M6OToibG9jYWxob3N0IjtzOjQ6InVzZXIiO3M6NDoicm9vdCI7czo4OiJwYXNzd29yZCI7czo0OiJyb290IjtzOjc6ImNoYXJzZXQiO3M6NzoidXRmOG1iNCI7czo0OiJwb3J0IjtzOjQ6IjMzMDYiO3M6ODoiZGF0YWJhc2UiO3M6NzoidHlwZWNobyI7czo2OiJlbmdpbmUiO3M6NjoiSW5ub0RCIjt9; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_first_run=1; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_uid=1; a5ead86a2b89c3e4cb90b4b93f5311a7__typecho_authCode=%24T%24YmBc9wsWdb37a95cb23694b5c4675553ae541fc17; security=impossible'
    }
    response = requests.post(url, headers=headers, data=data).text
    print(response)


if __name__ == '__main__':
    login()

 

总结

这个还是要学的啦. ~

 

posted @ 2021-08-11 00:02  Kelpie  阅读(415)  评论(0)    收藏  举报