1、暴力破解-low
暴力破解介绍
使用攻击者准备的自己的用户名和密码,一个一个枚举,尝试是否能登陆
理论来说,字典够大,就能破解
low
环境准备
java安装
字典准备
工具:brup
分析源码
<?php
if( isset( $_GET[ 'Login' ] ) ) {//是否提交了login参数
// Get username
$user = $_GET[ 'username' ];//接受usename传给user
// Get password
$pass = $_GET[ 'password' ];//接受password传给pass
$pass = md5( $pass );//给passmd5加密
// Check the database
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";//sql语句查询,从users表里面查询所有user=‘user’并且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 ) == 1 ) {//结果存在并且行数等于一
// Get users details
$row = mysqli_fetch_assoc( $result );//结果集中取得一行作为关联数组放在row里面
$avatar = $row["avatar"];//row的avatar下标
// Login successful
echo "<p>Welcome to the password protected area {$user}</p>";
echo "<img src=\"{$avatar}\" />";//输出avatar对应的图片
}
else {
// Login failed
echo "<pre><br />Username and/or password incorrect.</pre>";
}//如果验证失败就会返回登录失败
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
?> //没有提交login参数就不执行任何操作
获取用户名、密码(md5加密)、使用数据库查询语句进行数据库查询、结果判断是否存在
判断语句:如果查询结果在数据库中存在,得到用户详细信息,显示welcome……,否则返回用户名和(或)密码错误
从源码中发现对**$user**没有做任何过滤,存在明显的sql注入漏洞;
而**$pass**设置了md5加密算法,杜绝了通过参数password进行sql注入的可能性。
暴力破解-low
随便输入账号密码
brup代理拦截
login
send to intruder
然后设置参数,表示爆破的字段
第一种:
Sniper标签 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。
第二种:
Battering ram – 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中
第三种:
Pitchfork – 这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量
第四种:
Cluster bomb – 这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。
设置线程,网络失败重试多少次,多少秒重试
start attack
点length,按响应状态码排序,一般不一样的那个就是正确破解的,可以点开查看响应报文
这里爆破出密码是password
试了试果然可以
SQL注入
手工sql注入
1. Username: admin’ or ’1′=’1
Password: (空)
注入成功
原理:
select name from 表 where name='admin' or '1'='1'
1=1 永真
2. Username : admin’ #
Password : (空)
注入成功
原理:# 为注释 后面均无效