你能够由于现任很差而分手,但千万不要认为别人更好,永远有人更好,眼下即是更好。。。前端
---- 网易云热评web
1、什么是SQL注入数据库
SQL注入是指Web应用程序对用户输入的数据的合法性没有判断,前端传入后端的参数是攻击者可控的,而且参数带入数据库查询,那么攻击者能够经过构造不一样的SQL语句来实现对数据库的任意操做。后端
开发人员可使用动态SQL语句建立通用、灵活的应用。动态SQL语句是在执行过程当中构造的,它根据不一样的条件产生不一样的SQL语句。(不一样字段和不一样条件)安全
这里的参数user_id是可控的,且带入数据库查询,因此用户能够任意拼接SQL语句进行攻击。微信
2、 SQL注入的原理网络
1. 参数用户可控函数
2. 参数带入数据库查询工具
3、判断是否存在SQL注入web安全
一、单引号判断法,正常输出
二、在1后面输入单引号提交,报错,存在SQL注入漏洞
缘由:不管字符型仍是整型都会由于单引号个数不匹配而报错!
4、 SQL注入漏洞的两种类型
1. 数字型
2. 字符型
若是是数字型,1=2确定会报错,因为没有报错,说明该注入类型是字符型
5、构造闭合语句
根据报错内容,知道多了一个单引号
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''' at line 1
一、构造语句:1' and '1'='1
最后一个1少输入一个单引号,正好和原来的闭合
二、构造语句:1' and 1=1#
#符号能够最后的引号屏蔽掉
三、构造语句:1' and 1=1--
"-- ",后面是有一个空格的,一样也能够屏蔽后面的语句
--+
%23
6、MySQL注入相关的知识点:
MySQL 5.0以后,MySQL默认在数据库中存放一个“information_schema”的数据库,该库中存放着这三张表:
1. SCHEMATA:存储该用户建立的全部数据库的库名,记录库名的字段为
SCHEMATA_NAME。
2. TABLES:存储该用户建立的全部数据库的库名和表名,记录库名的字段为
TABLE_SCHEMA,记录表名的字段为TABLE_NAME。
3. COLUMNS:存储该用户建立的全部数据库的库名、表名、字段名。记录库名
的字段为TABLE_SCHEMA,记录表名的字段为TABLE_NAME,记录字段名的字
段为COLUMN_NAME。
limit:
limit m,n
m:记录开始的位置,0表明第一条记录
n:取n条记录
limit 0,2:第一条记录开始,取两条记录!
经常使用的函数和属性:
version():查询MySQL的版本
database():查询数据库名
user():查询使用MySQL的用户
@@datadir:查询数据库物理路径
@@version:查询MySQL的版本
7、MySQL的4种注释:
1. # 我是注释2. -- 我是注释 (--和我是注释之间有空格)
3. /*我是注释*/
以上注释均可以放在SQL语句的任意位置中!!!
4. /*!code*/ (内联注释)
内联注释能够用于整个SQL语句中,用来执行SQL语句!
例如:userid=1/*! UNION*//*! SELELCT*/1,2,3,4
文章来源于网络,若有侵权,请联系删除
禁止非法,后果自负
欢迎关注公众号:web安全工具库
本文分享自微信公众号 - web安全工具库(websec-tools)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。