4. DVWA亲测暴力破解




- <?php
- if( isset( $_GET[ 'Login' ] ) ) {
- // Sanitise username input
- $user = $_GET[ 'username' ];
- $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- // Sanitise password input
- $pass = $_GET[ 'password' ];
- $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- $pass = md5( $pass );
- // Check the database
- $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
- $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
- if( $result && mysqli_num_rows( $result ) == ) {
- // Get users details
- $row = mysqli_fetch_assoc( $result );
- $avatar = $row["avatar"];
- // Login successful
- echo "<p>Welcome to the password protected area {$user}</p>";
- echo "<img src=\"{$avatar}\" />";
- }
- else {
- // Login failed
- sleep( );
- echo "<pre><br />Username and/or password incorrect.</pre>";
- }
- ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
- }
- ?>

- <?php
- if( isset( $_GET[ 'Login' ] ) ) {
- // Check Anti-CSRF token
- checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
- // Sanitise username input
- $user = $_GET[ 'username' ];
- $user = stripslashes( $user );
- $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- // Sanitise password input
- $pass = $_GET[ 'password' ];
- $pass = stripslashes( $pass );
- $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- $pass = md5( $pass );
- // Check database
- $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
- $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
- if( $result && mysqli_num_rows( $result ) == ) {
- // Get users details
- $row = mysqli_fetch_assoc( $result );
- $avatar = $row["avatar"];
- // Login successful
- echo "<p>Welcome to the password protected area {$user}</p>";
- echo "<img src=\"{$avatar}\" />";
- }
- else {
- // Login failed
- sleep( rand( , ) );
- echo "<pre><br />Username and/or password incorrect.</pre>";
- }
- ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
- }
- // Generate Anti-CSRF token
- generateSessionToken();
- ?>

这里利用burp来爆破带有规律性的token验证:
1.抓包,选择Pitchfork(草叉模式),添加爆破的参数
2.在Options中找到Request Engine模块,把线程数设为1
3.在Options中找到Rediections模块,选择always,允许重定向
4.在Options中找到Grep-Extract模块,点击Add,并设置筛选条件,得到user_token。
5.在Payloads中为选择的参数设置字典
6.开始爆破
根据返回长度的大小,可以得到正确的用户密码
除了burpsuite爆破,也可以通过python脚本实现,鄙人较菜,代码不好看,但是经实验可以运行:
代码执行结果:
- <?php
- if( isset( $_POST[ 'Login' ] ) ) {
- // Check Anti-CSRF token
- checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
- // Sanitise username input
- $user = $_POST[ 'username' ];
- $user = stripslashes( $user );
- $user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- // Sanitise password input
- $pass = $_POST[ 'password' ];
- $pass = stripslashes( $pass );
- $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));
- $pass = md5( $pass );
- // Default values
- $total_failed_login = ;
- $lockout_time = ;
- $account_locked = false;
- // Check the database (Check user information)
- $data = $db->prepare( 'SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;' );
- $data->bindParam( ':user', $user, PDO::PARAM_STR );
- $data->execute();
- $row = $data->fetch();
- // Check to see if the user has been locked out.
- if( ( $data->rowCount() == ) && ( $row[ 'failed_login' ] >= $total_failed_login ) ) {
- // User locked out. Note, using this method would allow for user enumeration!
- //echo "<pre><br />This account has been locked due to too many incorrect logins.</pre>";
- // Calculate when the user would be allowed to login again
- $last_login = strtotime( $row[ 'last_login' ] );
- $timeout = $last_login + ($lockout_time * );
- $timenow = time();
- /*
- print "The last login was: " . date ("h:i:s", $last_login) . "<br />";
- print "The timenow is: " . date ("h:i:s", $timenow) . "<br />";
- print "The timeout is: " . date ("h:i:s", $timeout) . "<br />";
- */
- // Check to see if enough time has passed, if it hasn't locked the account
- if( $timenow < $timeout ) {
- $account_locked = true;
- // print "The account is locked<br />";
- }
- }
- // Check the database (if username matches the password)
- $data = $db->prepare( 'SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );
- $data->bindParam( ':user', $user, PDO::PARAM_STR);
- $data->bindParam( ':password', $pass, PDO::PARAM_STR );
- $data->execute();
- $row = $data->fetch();
- // If its a valid login...
- if( ( $data->rowCount() == ) && ( $account_locked == false ) ) {
- // Get users details
- $avatar = $row[ 'avatar' ];
- $failed_login = $row[ 'failed_login' ];
- $last_login = $row[ 'last_login' ];
- // Login successful
- echo "<p>Welcome to the password protected area <em>{$user}</em></p>";
- echo "<img src=\"{$avatar}\" />";
- // Had the account been locked out since last login?
- if( $failed_login >= $total_failed_login ) {
- echo "<p><em>Warning</em>: Someone might of been brute forcing your account.</p>";
- echo "<p>Number of login attempts: <em>{$failed_login}</em>.<br />Last login attempt was at: <em>${last_login}</em>.</p>";
- }
- // Reset bad login count
- $data = $db->prepare( 'UPDATE users SET failed_login = "0" WHERE user = (:user) LIMIT 1;' );
- $data->bindParam( ':user', $user, PDO::PARAM_STR );
- $data->execute();
- } else {
- // Login failed
- sleep( rand( , ) );
- // Give the user some feedback
- echo "<pre><br />Username and/or password incorrect.<br /><br/>Alternative, the account has been locked because of too many failed logins.<br />If this is the case, <em>please try again in {$lockout_time} minutes</em>.</pre>";
- // Update bad login count
- $data = $db->prepare( 'UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;' );
- $data->bindParam( ':user', $user, PDO::PARAM_STR );
- $data->execute();
- }
- // Set the last login time
- $data = $db->prepare( 'UPDATE users SET last_login = now() WHERE user = (:user) LIMIT 1;' );
- $data->bindParam( ':user', $user, PDO::PARAM_STR );
- $data->execute();
- }
- // Generate Anti-CSRF token
- generateSessionToken();
- ?>


4. DVWA亲测暴力破解的更多相关文章
- DVWA靶场练习-暴力破解
一.暴力破解 (Brute Force) 暴力破解是Web安全领域的一个基础技能,破解方法论为:构建常见用户名及弱口令 因此需要好的字典,对应破解场景构建特定的用户名密码,以及还需要具有灵活编写 ...
- 2. DVWA亲测CSRF漏洞
DVWA登陆 用户名:admin 密码:password Low级: 查看源代码: <?php if (isset($_GET['Change'])) { // Turn requ ...
- 1.4 DVWA亲测XSS漏洞
首先需要有配置好的DVWA环境,像下图这样 其中: XSS (DOM) : DOM型XSS漏洞 XSS (Reflected) : 反射性XSS漏洞 XSS (Stored) : 存储型XS ...
- 1.2 DVWA亲测sql注入漏洞(blind)
LOW等级 我们尝试输入: 即如果页面返回为假,则说明后面的语句成功注入 据此我们可以知道 1' and 真 --> 页面显示 “User ID exists in the data ...
- 2. DVWA亲测文件包含漏洞
Low级: 我们分别点击这几个file.php文件 仅仅是配置参数的变化: http://127.0.0.1/DVWA/vulnerabilities/fi/?page=file3.php 如 ...
- 1.4 DVWA亲测文件上传漏洞
Low 先看看源代码: <?php if(isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $tar ...
- Mac-Navicat Premium For Mac 12 破解 - [数据库可视化工具,亲测完美破解]
一.下面的公钥和私钥暂时存到文本编辑器中 公钥: -----BEGIN PUBLIC KEY-----MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQB8vXG0I ...
- 2. DVWA亲测命令执行漏洞
先看low级: 提示让我们输入一个IP地址来实现ping,猜测会是在系统终端中实现的, 我们正常输入127.0.0.1: 那我们就可以利用这个使用其他CMD命令 我们输入127.0.0.1& ...
- 1.3 DVWA亲测sql注入漏洞
LOW等级 我们先输入1 我们加上一个单引号,页面报错 我们看一下源代码: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input ...
随机推荐
- hd acm1008
Problem Description The highest building in our city has only one elevator. A request list is made u ...
- Spring Cloud之服务治理(注册发现)
服务治理SpringCloud Eureka 什么是服务治理 在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用.负载均衡.容 ...
- HDU5371 Hotaru's problem
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- codevs1279 Guard 的无聊
题目描述 Description 在那楼梯那边数实里面,有一只 guard,他活泼又聪明,他卖萌又霸气.他每天刷题虐 场 D 人考上了 PKU,如果无聊就去数一数质数~~ 有一天 guard 在纸上写 ...
- linux shell 编程(一)
脚本:命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序 linux 内核只能识别 elf格式的文件(可执行的可链接的文件) 脚本的第一行写 #!/bin/bash 表示脚本解释器
- Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined in class path resource [applicationContext.xml]
Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource' defined ...
- php 简单判断是否微信浏览器
今天遇到一问题,让一个页面在微信上打开和浏览器打开显示不同的按钮,这是一个建议的方法 $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($us ...
- mysql多位小数字段用decimal类型
转自http://database.51cto.com/art/201005/201651.htm
- Oracle学习笔记_03_单行函数
1.SQL函数: 单行函数.多行函数 单行函数: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 ...
- 【遍历二叉树】03二叉树的后序遍历【Binary Tree Postorder Traversal】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,返回他的后序遍历的 ...