美文网首页
第二篇 原理篇(1)sql

第二篇 原理篇(1)sql

作者: 留白_bb77 | 来源:发表于2019-04-25 17:42 被阅读0次

数据库不同,字符串连接符也不同,如SQL Server连接符号为“+”,Oracle 连接符为“||”,MySQL连接符为空格。

常见的注入叫法:

POST注入:注入字段在POST数据中;

Cookie注入:注入字段在Cookie数据中:

延时注入:使用数据库延时特性注入;

搜索注入:注入处为搜索的地点;

base64注入:注入字符串需要经过base64加密;

数据库

sqlserver

mysql  

支持以下3种注释风格:

#:注释从“#”字符到行尾;

--:注释从“--"序列到行尾。需要注意的是,使用此注释时,后面需要跟上-一个或多个空格;空格、tag都可以:

/**/: 注释从/*序列到后面的*/序列中间的字符。

/*!*/ 感叹号有特殊意义,比如/*5555,username*/的意思是若MySQL版本号高于或者等于5.555语句将会被执行,如果“!”后面不加入版本号,MySQL将会直接执行SQL语句。

函数 

load_file()读文件

hex()将字符串转换为十六进制unhex反向

into outfile写文件

md5 返回md5的值

@@datadir读取数据库路径

@@basedirMySQL安装路径

@@version_compile_os操作系统

显错  

1.UpdateXml() 。

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。

第三个参数:new_value,String格式,替换查找到的符合条件的数据

作用:改变文档中符合条件的节点的值

2.extractvalue() :对XML文档进行查询的函数

语法:extractvalue(目标xml文档,xml路径)

第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

extractvalue()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位

3.floor

宽字节

长字符截断  在MySQL中的一个设置里有一个sql mode 选项,当sql_ mode 设置为default时,即没有开启STRICT ALL _TABLES选项时(MySQL sql_ mode默认即default), MySQL对插入超长的值只会提示warning,而不是error,这样就可能会导致一些截断问题。

延时注入

oracle

注入工具

sqlmap

防止sql注入

防御数字型注入相对来说是比较简单的,只需要在程序中严格判断数据类型即可。如:使用is numeric()、ctype digit0等函数判断数据类型,即可解决数字型注入。

特殊字符转义

相关文章

网友评论

      本文标题:第二篇 原理篇(1)sql

      本文链接:https://www.haomeiwen.com/subject/lumagqtx.html