跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

绕过一些正则来触发Xss

精选回复

发布于

今天翻译一篇文章,在有限制的地方挖出潜在xss
Referer:https://brutelogic.com.br/blog/xss-limited-input-formats/
收获还是可以的

AO95CQ.png

正文

上面的文章给出的练习地址是:https://brutelogic.com.br/tests/[email protected]
可以从页面上看到,这个xss练习平台有4题

ALvfqU.md.png

第一题
引用email参数输出,尝试以常规的方式插入xss payload

ALxksf.md.png

发现并没有成功,查看文章后注意文章提到的

ALx6Te.md.png

查看php官网查看该函数

filter_input — 通过名称获取特定的外部变量,并且可以通过过滤器处理它

使用过滤器里的email来过滤,由于此函数里面的email过滤是通过RFC822协议来验证是否为邮箱的
只要你payload满足这个协议即可成功触发xss
RFC822:http://sphinx.mythic-beasts.com/~pdw/cgi-bin/emailvalidate

ALxLfs.png

尝试将payload插入

"<script>alert(1)</script>"@x.y
  • 1

由于filter_input()函数会过滤掉空格,所以payload的时候要避免空格

ALzZX6.md.png

通过这个题可以得到一个检测方法:

如果是用filter_input()函数来判断是否为email的话,输入 "<"@x.y filter_input()函数会认为这是个邮箱
使用preg_match()进行正则匹配的话,输入"<"@x.y 认为不是个邮箱
一般实际中遇见邮箱填写的地方可以试试

第二题
这题会根据你输入的url来生成url (a标签),猜测使用filter_input()或正则来匹配 (因为匹配url的正则能被绕过)
正则是

[a-zA-z]+://[^\s]*

测试javascript://alert(1) 可以看到正则成功匹配出了

AOSe8s.png

插入payload尝试,发现不行

AOSYG9.png

根据文章说到

AOSNx1.md.png

不明白为什么要将%0AURL编码两次?

通过查询可以知道js里面的%0A是换行符,将%0A URL编码两次,浏览器默认解码一次,那么%0A就会存在
最后payload会变成这样

javascript://
alert(1)
AOpZdO.md.png

第三题
这题根据测试,发现判断条件有些改变

使用上一题的payload发现并不行= =,后面继续阅读文章和自己实现
发现判断的url是这样的

https://google.com/search?q=Brute%252BXSS 正则认为这才是url = =

 

那么根据分析得到的payload是

javascript://https://google.com/search?q=Brute%252BXSS%250Aalert(1)

 

AO9itg.md.png

第四题
通过测试发现正则是判断长度的,长度如果不达到32将不显出

AO9GcR.png

最后得出payload是

12345678901<svg onload=alert(1)>

 

AO95CQ.png

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。