6.29 学习日报: XSS 练习 4道

练习网站:alert(1)to win

https://alf.nu/alert1

Warmup:

 

没有任何过滤,直接闭合前面的console.log.

输入: “);alert(1)//

Adobe:

知识点:

  1. Js的正则表达式。参考:https://www.sohu.com/a/279549933_713028

第二题过滤了,替换成了转义字符+”

思路:将/再转义一次。再闭合console.log

输入:\)”;alert(1)//

 

Json:

知识点:函数JSON.stringfy() 参考:https://www.runoob.com/js/javascript-json-stringify.html

即,会过滤\ “ (在前面添加一个转义字符)  但是没有过滤< > /

思路:直接闭合<script>

输入:”);</script><script>alert(1)//

 

Markdown:

知识点:

  1. JS正则表达式 参考:https://www.sohu.com/a/279549933_713028
  2. onerror: 参考: https://www.w3school.com.cn/jsref/event_onerror.asp

出现错误时自动触发后面的JS代码。支持这个函数的标签有:<img>, <object>, <style>

  1. replace 用法:https://www.w3school.com.cn/jsref/jsref_replace.asp
  2. Img  alt属性 : 图片无法加载时在原位置显示相应的文本

思路:

这三个正则表达式含义为:

  1. < 替换成实体字符 <, 替换成 实体字符 "
  2. 如果字符串包含有http://开头的字符串,则变为<a href="http://">http://</a>
  3. 如果字符串包含[[img_src|img_alt]]格式的字符串,则变为<img alt="img_alt" src="img_src.gif">

由于图片肯定无法加载即一定出现错误,所以可以构造 onerror=’alert(1)’

但是不知道是哪一个部分引起alert

所以看了答案,由答案倒推

做的几个实验:

  1. <img onerror='alert(1)'> alert
  2. <img onerror='alert(1)' src="a.gif"> alert
  3. <img http://onerror='alert(1)' src="a.gif"> alert
  4. <img alt="http://onerror='alert(1)'" src="a.gif"> 
  5. <img alt="<a href="http://onerror='alert(1)'" src="a.gif"> 
  6. <img alt="<a href="http://onerror='alert(1)'" src="a.gif">">http://onerror='alert(1)']]</a> 

结论:有一个onerror='alert(1)' 显示出来并且要有一个 src=””

alt 闭合掉,所以$2里面要有一个

但是根据正则1,不能直接写出来,所以利用正则2 href 后面的 ” 来添加

所以构造一个http://onerror=’alert(1)’

把这个式子放在$2 的位置, $1的位置随便填一个

构造[[a|http://onerror='alert(1)']]

//仅在chrome上成功。。

 

猜你喜欢

转载自www.cnblogs.com/yunqian2017/p/13210352.html