Jump to content
  • Hello visitors, welcome to the Hacker World Forum!

    Red Team 1949  (formerly CHT Attack and Defense Team) In this rapidly changing Internet era, we maintain our original intention and create the best community to jointly exchange network technologies. You can obtain hacker attack and defense skills and knowledge in the forum, or you can join our Telegram communication group to discuss and communicate in real time. All kinds of advertisements are prohibited in the forum. Please register as a registered user to check our usage and privacy policy. Thank you for your cooperation.

    TheHackerWorld Official

绕过一些正则来触发Xss

 Share


Recommended Posts

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

AO95CQ.png

正文

上面的文章给出的练习地址是:https://brutelogic.com.br/tests/input-formats.php?email=user@domain.com
可以从页面上看到,这个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
Link to post
Link to comment
Share on other sites

 Share

discussion group

discussion group

    You don't have permission to chat.
    • Recently Browsing   0 members

      • No registered users viewing this page.
    ×
    ×
    • Create New...