| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> WampServer 搭建本地服务器及 XSS 基本原理和初步实践(一) -> 正文阅读 |
|
[PHP知识库]WampServer 搭建本地服务器及 XSS 基本原理和初步实践(一) |
目录 一、WampServer 搭建本地服务器1、WampServer 下载安装及变小绿标方法一:官网下载地址: WampServer下载不了怎么办-百度经验 (baidu.com)https://jingyan.baidu.com/article/948f5924c3d8b0d80ff5f992.html注意不要下载为addon版,那个是升级包,要不然你就可能出现以下界面: 或者打开官网这个版本也行,比较直接: 方法二:中文站WampServer中文站 - Apache/MySQL/MariaDB/PHP集成环境软件下载站https://wampserver.site/index/index.html 安装过程简单,除了路径,一路确定即可,此处省略...? 配置浏览器时,如果选择google,一般在:C:\Users\用户名\AppData\Local\Google\Chrome\Application,可以对应自行查找... 问题及解决至于图标怎么由红变黄变绿,网上有相关教程大家可以搜【建议搜新版的教程,老版的有的博客不严谨会给你带来问题】,我只写我遇到的问题: 1、只有 wampmariadb64 服务怎么也启动不了,报错,也没有端口占用问题,各种办法都尝试了 ?最终的解决办法是重装,在下图这个安装步骤下,选 MariaDB 10.5.13 和 MySQL 8.0.27 版本 这样安装完后,只有 wampapache64 服务不能安装,这个好解决,左击图标,找 apache 把 httpd.conf 打开,更改端口 80 为8081,只此两处即可: 小绿标出现: 2、记得不要更改语言为 chinese(说来我也是闲得慌,因此建议安装配置时看最新教程),这个软件闪退,再打开报错进不去,目前未查到有效的解决办法,我进行了重装,两分钟搞定 2、访问本地服务器相关配置1、检查是否正常搭建服务器左击小绿标,点击 localhost: 显示如下界面,说明电脑已正常搭建服务器: 2、关闭 FHQ,修改配置文件关闭 FHQ,如下图,如果不想关闭,可以参考如下文章,不难操作,不做演示: https://zhuanlan.zhihu.com/p/148254246https://zhuanlan.zhihu.com/p/148254246 左击小绿标,点击 Apache-http-vhosts.conf 和 httpd.conf 文件,打开,搜索 Require local 字段,全部改为 Require all granted 如下是对?httpd-vhosts.conf 文件的修改,httpd.conf 的修改也是如此: 3、连接同一局域网,访问服务器服务器和手机连在同一局域网: ?服务器 IP,通过 ipconfig 命令查看: 通过手机访问服务器: 二、XSS 原理本节两张图片来自: ?如下是 XSS 的分类,将在下文第三节逐一演示: 三、XSS 演示演示一:反射型 XSS?简介:非持久型、参数型跨站脚本,一般将恶意脚本附加到 URL 中 数据流向:前端注入 -> 服务器 -> 返回前端浏览器解析,后续恶意脚本携带用户 cookie 发送至恶意服务器,小黑通过访问可以处理得到私密信息 ① 通过 GET 的方式写一个 hello.php 文件,丢进 wamp 安装位置的 www 目录下: ?演示代码 hello.php 如下:
访问时,不加参数,GET 由于不能获取值而出错: ?访问时,携带参数后,有输出: 如果访问时,参数进行恶意注入,如下地址栏,访问就会出现弹窗: 点击确定后,无 GET 到任何值,因为 GET 到的东西已经执行,即 <script> ② 通过 POST 的方式客户端呈现:enter.html
服务器端处理:actionEnter.php
都丢到 www 目录下: ?访问: ③ 说明1、get 和 post 获取参数的区别见附录 2 2、虽然反射型 XSS 的?恶意代码没有注入正常服务器端,但是小黑会进行如下操作:? 1、在网站上将恶意脚本作为参数附加到正常链接上,变成恶意链接,这个链接和正常的几无区别 2、当你写好密码输入框点击提交后,正常的传递给服务器,请求正常服务器的资源(假设服务器cookie 设置了密码作为它的一部分,填写相关值,就会相应存储在客户端,当浏览器请求时服务器可以读取并加以验证确定是否返回资源) 3、服务器正常返回,小黑注入的参数如果有用服务器就存,没用服务器也不会理会,正常执行,把资源返回 4、返回到浏览器(软件)这一层解析时,就会解析恶意注入的代码,由于 cookie 是绑定在域名上的,服务器再次返回时,这些恶意代码的执行极有可能会携带你的 cookie 信息,传递给黑客搭建好的服务器 5、黑客去请求恶意服务器,并对参数做分离处理,就能窃取你的 cookie 信息 演示二:持久型 XSS?简介:持久型 XSS 也叫存储型 XSS,如果服务器端没有进行过滤的话,代码就会注入到服务器端,直接影响 web 服务器的安全 ① 更改数据库密码左击图标:点击 PhpMyAdmin 初始密码为空,输入 root 后,点击执行即可进入: 进入修改密码:? 如果不成功,可以通过命令行修改,网上教程挺多,不再演示: ② 创建数据库并建表注意下边的 VARCHAR 长度尽量大于?30 做演示,否则太短后边的 script 代码注入显示不完整 : 最终效果: ③ 注入 XSS 演示客户端呈现:index2.html
服务器端处理:index2action.php
都丢到 www 目录下: 数据流向:前端 -> 服务器 -> 存入服务器端数据库 ->(经另一访问)服务器端(查库)->(另一访问)前端 正常访问前端: 添加操作处理:? 查看数据库,已成功添加: 假如有业务需求,这个表可以供需求方查询,因此提供一个接口供查询:
如下是查询演示:? 如果注入恶意代码,存入服务器端数据库,这样当他人查询时,就会报错 细节:如果 alert 里是单引号 这样的恶意注入会失败: 改为如下两种方式注入均可: ? 最终显示:? 当其他用户通过接口进行访问时,弹窗弹出两次: ④ 说明上述案例仅作演示: 一般实际的存储型 XSS 更复杂、更具威胁性,数据存入到服务器端,用户访问就会触发,对 WEB 服务器的安全也会造成影响 比如小黑将制作的HDD脚本加外部脚本注入正常服务器,只要有用户访问,就会弹出这些东西... 更有甚者,用户浏览器还会对服务器返回的 XSS 和正常页面返回,自动向小黑搭建的恶意服务器发起请求,cookie 等信息就可能再次传递给恶意服务器,小黑就可进行访问自己搭建的恶意服务器来窃取用户信息... 因此服务器端一般会设置过滤,比如上例中过滤掉 script,什么样的数据可以存,数据的存入该采用什么策略...,最大限度保证不被无意或恶意的注入...,还会有绕过过滤的方法,设计 XSS 来利用漏洞,后期有时间会继续深入理解... 演示三:DOM 型 XSS?简介:XSS 针对的是 DOM-XSS 漏洞,触发时不经过后端处理,直接通过 url 传入参数控制来触发,这和第一种反射型的 GET 方式有相似之处,DOM 的介绍如下: 什么是DOM?你了解DOM树吗?_二哈汪汪叫的博客-CSDN博客_dom树https://blog.csdn.net/wei1273356078/article/details/106543967前端代码 index3.html:
服务器端处理:index3action.php,这里主要是获取输出并显示
丢到 www 目录下:? 数据流向:前端 -> 浏览器解析 -> 前端 正常访问前端: 服务器处理后返回:? 恶意注入演示: 附录1、cookiecookie 存储在客户端:?cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。因此,服务端脚本就可以读、写存储在客户端的 cookie 的值 2、get 和 post 的区别(3条消息) get和post的区别_大鸡腿最好吃的博客-CSDN博客https://blog.csdn.net/m0_59070120/article/details/124309929#:~:text=%E5%8C%BA%E5%88%AB%20%E8%A1%A8%E7%8E%B0%E5%A6%82%E4%B8%8B%3A%201.%20get%20%E6%98%AF%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E8%8E%B7%E5%8F%96%E6%95%B0%E6%8D%AE%2C%20post%20%E6%98%AF%E5%90%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BC%A0%E9%80%81%E6%95%B0%E6%8D%AE%E3%80%82%202.,%E7%9A%84%20URL%E4%B8%AD%2C%E5%80%BC%20%E5%92%8C%20%E8%A1%A8%E5%8D%95%E5%86%85%E5%90%84%E4%B8%AA%E5%AD%97%E6%AE%B5%E4%B8%80%E4%B8%80%E5%AF%B9%E5%BA%94%2C%E5%9C%A8URL%E4%B8%AD%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E3%80%82%20post%20%E6%98%AF%E9%80%9A%E8%BF%87HTTP%20post%20%E6%9C%BA%E5%88%B6%2C%E5%B0%86%E8%A1%A8%E5%8D%95%E5%86%85%E5%90%84%E4%B8%AA%E5%AD%97%E6%AE%B5%E4%B8%8E%E5%85%B6%E5%86%85%E5%AE%B9(3条消息) 程序员:我终于知道post和get的区别_dotnet全栈开发的博客-CSDN博客_post与get的区别https://zhanglin.blog.csdn.net/article/details/103059900?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~OPENSEARCH~default-1.pc_relevant_default&utm_relevant_index=2 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 7:49:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |