SQL 联合注入与双写绕过靶场练习
[极客大挑战 2019]LoveSQL1.经过上次的教训看到SQL注入先进行判断类型是字符型注入然后输入or 11#发现告诉了password。2.输入admin和password之后发现页面还是不变这个方法行不通。万能密码登录方式不适合选择union联合注入脱库。3.输入1 order by 4#报错、1 order by 3#正常通过order by来判断列数发现是3列4.通过union来找回显位置输入-1 union select 1,2,3#通过页面可以查看到23是回显位然后判断数据库名使用-1 union select 1,database(),3#发现数据库为geek5.接着找表名用-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemageek#可以看出表名是geekuser,l0ve1ysq1猜一下第一个是数据表而第二个正好对应题目先尝试第二张表。6.输入-1 union select 1,group_concat(username,password),3 from l0ve1ysq1#发现成功获得flag[极客大挑战 2019]BabySQL1.依据是SQL注入题型先判断注入点为字符型注入再次输入or 11#发现报错说明or被过滤清空了尝试双写绕过。2.使用双写绕过发现可以依旧是报password但还是行不通。3.沿用上道题的方法通过order by来判断列数输入1 oorrder bbyy 3#发现还是3列。4.大胆猜测一下回显位还是23通过测试猜想没错然后按照上道题依次是库表字段flag和上道题不同的是都需要双写绕过。5.这里有一个小坑password 里面的字母or也会被过滤所以输入password会报Unknown column passwd最后就可以获得flag。知识点总结SQL注入基础判断1.单引号测试判断字符型注入参数被单引号包裹数字型不用闭合单引号。2.order by 排序法判断SQL查询的列数报错超出总列数正常合法列。3.union select 联合查询利用 -1 这类不存在的值让前面查询结果为空显示我们构造的select结果找到回显位。4.注入查询固定套路标准流程数据库名 → 表名 → 字段名 → 查询字段数据用到的库information_schemaMySQL元信息库存库、表、字段信息database()查询当前数据库名information_schema.tables查表information_schema.columns查字段group_concat()把多条结果拼接成一行输出过滤绕过BabySQL专属重点高频考点1.绕过方式关键字双写绕过被过滤union、select、from、order、by、or写法uniunionon、seselectlect、ffromrom、oorrder、bbyy、oor原理后端正则匹配到关键词就删除双写之后删掉中间匹配的词剩下的拼接成正常关键字。2.隐藏坑不仅SQL命令关键字会被过滤字段名里面包含敏感词也会被过滤password 里面含有 or → 过滤后变成 passwd字段不存在报错。解决passwoorrd 双写绕过。两个题对比LoveSQL无过滤联合注入基础模板题用来熟悉整套脱库流程BabySQL关键字过滤双写绕过考察你能不能举一反三、注意隐藏在字段里的敏感词