Mysql安装这里我们直接使用phpstudy集成环境中的mysql
Mysql常用命令(1)mysql本地连接
(2)查看所有数据库
(8)创建数据库
(12)查询当前数据库所在目录
什么是SQL注入?SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的,常常会导致整个数据库被"脱裤"。尽管如此,SQL注入仍是现在最常见的Web漏洞之一
SQL注入步骤(1)判断是否存在注入,注入是字符型还是数字型(2)猜解SQL查询语句中的字段数(3)判断哪些位置字段可以注入利用(4)查询数据库(当前使用数据库或所有数据库)(5)查询指定数据库中的表(6)查询指定表中的字段名(7)查询表中字段的值
可以将SQL注入分为两大类:非盲注和盲注,非盲注就是有报错回显,盲注就是没有报错回显
常见的SQL注入方法有:
数字型/字符型注入判断首先id后面加单引号查看是否可能存在sql注入,返回正常,不存在;返回不正常,存在
假设ip/id=1
数字型,参数没有被引号包围:id=1and1=1返回页面正常id=1and1=2返回页面不正常id=1’and‘1’=‘1返回页面不正常id=1’and‘1’=‘2返回页面不正常字符型,参数被引号包围:id=1and1=1返回页面正常或错误id=1and1=2返回页面正常或错误id=1’and‘1’=‘1返回页面正常id=1’and‘1’='2返回页面不正常总结出两种测试方法:and1=1正常,1=2不正常,可能存在数字型注入/and1=1正常或错误,1=2正常或错误,可能存在字符型注入’and‘1’=‘1不正常,’and‘1’=‘2不正常,可能存在数字行注入/’and‘1’=‘1正常,’and‘1’='2不正常,可能存在字符型注入
原理(1)unionselect定义将多个SELECT语句的结果合并到一个结果集中(2)mysql直观测试
注入过程1、首先判断目标是否存在sql注入,是什么类型的sql注入
(3)Payload
测试环境Pass-8
注入过程1、判断数据库名称长度
测试环境Less-9
Payload
测试环境Pass-32
测试环境Pass-5
测试环境Pass-38
第一步:插入恶意数据进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
第二步:引用恶意数据开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。
Payload(1)先创建一个含有注释符的用户amin’#(2)看下数据库,成功添加了记录(3)源码sql语句分析:
原理利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息
利用条件secure_file_priv这个参数用来限制数据导入和导出secure_file_priv=代表对文件读写没有限制secure_file_priv=NULL代表不能进行文件读写secure_file_priv=F:代表只能对该路径下文件进行读写注查看方法:showglobalvariableslike‘%secure%’;修改方法:my.ini函数,没有的话就直接添加