SQLインジェクション(SQL Injection)の攻撃方法を学ぶ
2022-01-05 01:26:11
これは、見境のない学生に機会を与え、いくつかの奇妙なクエリー文字列を入力し、特定のSQL文にスプライシングすることによって、インジェクションの目的を達成することができることを利用することができます。データベースから重要な情報を得ることができるだけでなく、パーミッションを適切に設定しなければ、テーブルを丸ごと削除することさえできてしまうのです。ですから、SQLインジェクションの脆弱性は、やはりかなり深刻なのです。私もWebサイトの書き方を覚えた当初は、SQL文のスプライシングに頼って食いつないでいたことがありました......。
例
SQLインジェクションの仕組みをよりよく理解するために、次のようなインターフェイスのサンプルWebページを作成しました。
click to loginブロックのコードは以下の通りです。5行目にスプライスされたSQLステートメントを使用していることに注意してください。
private void Login()
{
string uname = tbName.Text;
string pwd = tbPassword.Text;
string sqlCmd = "select * from [Users] where UserName = '" + uname + "'";
string sqlCmdRep = sqlCmd.Replace("Users", "XXX").Replace("UserName", "XXX");
lbSQL.Text = sqlCmdRep;
try
DataTable dt = DataSQLServer.GetDataTable(sqlCmd);
gvResult.DataSource = dt;
gvResult.DataBind();
If (dt.Rows.Count == 1 && pwd == dt.Rows[0]["Password"].ToString())
{
lbRes.Text = dt.Rows[0]["UserName"] + " Login Success!";
}
else if(dt.Rows.Count == 0)
{
lbRes.Text = uname + " not exist!";
}
else
{
lbRes.Text = "Login Fail!";
}
}
catch (Exception ex)
{
lbRes.Text = "Error: " + ex.Message;
}
}
例
SQLインジェクションの仕組みをよりよく理解するために、次のようなインターフェイスのサンプルWebページを作成しました。
click to loginブロックのコードは以下の通りです。5行目にスプライスされたSQLステートメントを使用していることに注意してください。
コピーコード
コードは以下の通りです。
private void Login()
{
string uname = tbName.Text;
string pwd = tbPassword.Text;
string sqlCmd = "select * from [Users] where UserName = '" + uname + "'";
string sqlCmdRep = sqlCmd.Replace("Users", "XXX").Replace("UserName", "XXX");
lbSQL.Text = sqlCmdRep;
try
DataTable dt = DataSQLServer.GetDataTable(sqlCmd);
gvResult.DataSource = dt;
gvResult.DataBind();
If (dt.Rows.Count == 1 && pwd == dt.Rows[0]["Password"].ToString())
{
lbRes.Text = dt.Rows[0]["UserName"] + " Login Success!";
}
else if(dt.Rows.Count == 0)
{
lbRes.Text = uname + " not exist!";
}
else
{
lbRes.Text = "Login Fail!";
}
}
catch (Exception ex)
{
lbRes.Text = "Error: " + ex.Message;
}
}
関連
-
優れたWebログセキュリティ解析ツール10選 おすすめまとめ
-
広告コードをrm形式で挿入
-
ASP、PHP、.NETのHTTP-REFERERの偽造方法と偽造REFERERを防止するための方法
-
WebサイトにおけるInvisible Bomb eWebEditorのファイルアップロードの脆弱性に対するパッチについて
-
ASPインジェクションの手法を網羅的に理解する【収録概要
-
PHPSHELLがまた新しくなりました
-
asp cer cdx htrファイルのアップロードを許可しないサイトでの解決策!
-
Wind Newsletter 4.0の未公開バグについて
-
Dでよく使われるインジェクションコマンドをいくつかまとめてみました。
-
コンピュータが他人に操作されるのを防ぐ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
よくあるウェブ攻撃について解説
-
他人のQQチャット記録を確認する方法を調べる方法 QQチャット記録を確認する詳細な方法?
-
QQは、履歴を削除する方法簡単な方法を復元するためにチャット
-
SA サンドボックスモードで xp_cmdshell と xplog70.dll をリストアせずにコマンドを実行する。
-
JSとC#それぞれのアンチインジェクションコード
-
mysql5 インジェクションの脆弱性
-
Wish poolプラグインリモートコンテナの脆弱性
-
Macでmitmproxyを使ってHTTPSのデータを取得する方法
-
Sql2005インジェクションアシストスクリプト[修正版]について
-
サーブユーが管理者パスワードを入手する新手口(スピン)