Less-2
127.0.0.1/Less-2/?id=1'
看代码知该关卡是数字型注入,根据报错提示在' LIMIT 0,1中有错误。LIMIT 0,1是SQL语句中用来限制查询结果返回的记录数的,不存在问题。由此可以判断问题在单引号上,正是由于以上?id=1'的写法单引号无法闭合让其报错。
可以推测出,后端SQL语句写法为select … from … where id=$id LIMIT 0,1
Less-3
127.0.0.1/Less-3/?id=1'
根据报错提示在'1'') LIMIT 0,1中存在错误,同样的可以判断问题在'1'')上。'1'') 可以简单猜测一下输入id=1的时候后端查询应该是'1')这样子,那么左边就有可能存在一个左括号 ( ,这个和SQL语句特性有关。可以根据错误信息猜出后端干扰符的写法。
可以推测出,后端SQL语句写法为 select … from … where id=('$id') LIMIT 0,1
SQL语句类似写法
数字
- SELECT * FROM users WHERE id=1
引号
- SELECT * FROM users WHERE id='1'
- SELECT * FROM users WHERE id="1"
正负
- SELECT * FROM users WHERE id=--1 负负得正
- SELECT * FROM users WHERE id=++1 还是正
优先级
- SELECT * FROM users WHERE id=(1) 小括号就是数学运算符,改变1运算优先级
- SELECT * FROM users WHERE id=('1')
- SELECT * FROM users WHERE id=("1")
表达式
- SELECT * FROM users WHERE id=(1+1)*2 查询结果是id=4