列名を知らなくてもMySQLインジェクションを詳細に解説

列名を知らなくてもMySQLインジェクションを詳細に解説

序文

最近、穴を掘ってスペースを作っているだけなので、心が空っぽになっているように感じます。テクノロジーそのものに戻って、もっと快適に感じた方が良いと思います。さて、あまり話さずに、詳しい紹介を見てみましょう。

前提

以下の状況は、MySQL < 5 バージョン、または MySQL >= 5 バージョン [information_schema ライブラリが存在する] に適用され、ライブラリ名とテーブル名が取得されています。

① テーブル名のみ取得できても列名が取得できない場合、または有効な内容のない列名のみ取得できる場合(IDなど)

②information_schemaライブラリ内のテーブルを介して、テーブル名や列名などの他のテーブルの構造を取得したいが、このライブラリはWAFによってフィルタリングされている場合

実際、個人的にはこの方法はバージョン5以下ではより実用的だと感じています。なぜなら、私の場合、wafに遭遇するとたいてい諦めてしまうからです(私は本当に下手なプログラマーです23333)

解決する

通常のクエリ:

以下は、テストデータベースのユーザーテーブルの内容に対する通常のクエリです。

ユーザーから*を選択します。 

UNIONクエリ:

1、2、3、4 を選択 union select * from user; 

対応する数字の列を照会します。

クエリの列に対応する番号を使用できます。たとえば、2 はテーブル内の名前列に対応します。

(select 1,2,3,4 union select * from user)a から `2` を選択します。 

エイリアス置換クエリ:

バックティック`が使用できない場合は、代わりにエイリアスを使用できます。たとえば、2のエイリアスをbに設定します。

(select 1,2 as b,3,4 union select * from user)a から b を選択します。 

複数列のマージクエリ:

上記と同様: ここでバックティックが使用できない場合は、代わりにエイリアスを使用することもできます

select concat(`2`,0x3a,`3`) from (select 1,2,3,4 union select * from user)a limit 1,1; 

翻訳とアイデアの整理のみ

元のリンク: https://blog.redforce.io/sqli-extracting-data-without-knowing-columns-names/

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL と SQL インジェクションとその防止方法
  • MySQL インジェクション分析による SQL インジェクション
  • MySQL データベースは concat 関数を使用して SQL インジェクション クエリを実行します。
  • mysql5 インジェクション脆弱性
  • MySQL インジェクションや HTML フォームの不正使用を防ぐ PHP プログラム
  • MySQLインジェクションバイパスフィルタリング技術の概要
  • MySQL インジェクションにおける outfile、dumpfile、load_file 関数の詳細な説明
  • MYSQL updatexml() 関数のエラーインジェクション分析
  • node-mysql で SQL インジェクションを防ぐ方法の概要
  • PHP MYSQL インジェクション攻撃を防ぐための 7 つの重要なポイント

<<:  Tomcat マルチポートドメイン名アクセスと gzip 圧縮方式を有効にする構成

>>:  NODE.JS を使用して WEBSERVER を作成する手順

推薦する

DOCTYPE 文書型宣言 (Web ページ愛好家必読)

DOCTYPE 宣言 作成するすべてのページの先頭に、ドキュメント宣言が必要です。はい、そうでしょう...

JS はランダム点呼システムを実装します

参考までに、JSを使用してランダム点呼システムを実装します。具体的な内容は次のとおりです。毎回の授業...

OR キーワードを使用した MySql 複数条件クエリ ステートメント

前の記事では、And キーワードを使用した MySql の複数条件クエリ ステートメントを紹介しまし...

Vueはドラッグ可能なツリー構造図を実装します

目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...

MySQL テーブルをコピーする 3 つの方法 (要約)

テーブル構造とそのデータをコピーする次のステートメントは、データを新しいテーブルにコピーします。注:...

DockerにJava環境をインストールするための実装手順

この記事は Linux centos8 をベースにして、docker をインストールし、イメージをプ...

HTMLウェブページテーブル構造化マークアップの応用に関する簡単な説明

Web テーブルの構造マークアップについて説明する前に、いくつかの画像を見てみましょう。 HTML ...

MYSQL 左結合の最適化 (10 秒から 20 ミリ秒)

目次【機能背景】 [生のSQL] 【独自SQL解析】 【分析手順】 [最適化されたSQL] 【最適化...

HTML ハイパーリンク タグ_Powernode Java アカデミー

HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

MySQL 8.0.13 のインストールと設定方法を皆さんと共有したいと思います。お役に立てれば幸...

Linux で大きなファイルの指定された内容を見つける方法

大きなことも小さなことも考えて、方向転換しましょう。 Linux では非常に大きなファイルに遭遇する...

CentOS7 ファイアウォールとポート関連コマンドの紹介

目次1. ファイアウォールの現在の状態を確認する2. ファイアウォールサービスを開始する3. ファイ...

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

MySQL 最適化 Zabbix パーティション最適化

zabbix を利用する上での最大のボトルネックはデータベースです。zabbix のデータストレージ...