脚本宝典收集整理的这篇文章主要介绍了常见的SQL注入总结,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
一.基本注入过程
如果有显示位用联合注入的方法进行注入
查看使用账号:user()
查看数据库版本信息:vsersion()
如果没有显示位进行盲注
二.堆叠注入:
字节:
一个字节八位。
Unicode:字符编码,两个字节表示一个文字。
UTF-8:针对Unicode的一种可以变长度的字符编码。
宽字节:GB2313,GBK,GB18030,Big5,Shift_JIS等都是常用的宽字节。实际上只有两个字节,存在的主要安全问题时吃ASCII字符(一字节)的现象。
addslashes()函数:在预定义字符前添加反斜杠的字符串。比如说一个字符型的语句对其进行查询时传入的数据为?id=1’后面的这个’就可以把前面的单引号进行闭合。但是用addslashe()函数后就会在以GET和POST传入的数据的’前加上/就会使’失去其特殊的意义变成其原本的意思。这样就无法闭合单引号也就无法对后面进行sql注入。
MySQL的字符集转换过程:
①MYSQL Server收到请求时将请求数据从character_set_clicent转换为character_set_connection
②进行内部操作前将请求数据从character转换为内部操作字符集,其确定过程为:
• 使用每个数据字段的CHARACTER SET设定值;@H_360_71@
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(mysql扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。
PHP中的编码为GBK,函数执行添加的是ASCII编码(addslashe函数添加的/也是一个ASCCII编码)
UTF-8编译汉语时一个汉语占3个字节,GBK占两个字节,;mYSQL默认的字符集是GBK等宽字节字符集,所以MYSQL会认为两个字节是一个汉字,这时我们在前面加一个ASCII大于128的编码字,比如我们输入%DF%27,(这个%27就是单引号,他前面会加上一个/也就是%5c)这样这个%df就会与后面的%5c相结合变成一个汉字,这样这个/转义就失去了意义。
2.实例:
如图所示对其传入1’闭合前面的单引号时,他自动调用addslashe函数对传入的单引号前面加入/,使其转义。导致无法闭合单引号。
但是当我们传入1%df%27时,页面报错
如图所属说明单引号变成了他的特殊意义,把前面的单引号进行闭合所以导致报错。这时我们就可以像之前那样进行暴库,暴表了。
以上是脚本宝典为你收集整理的常见的SQL注入总结全部内容,希望文章能够帮你解决常见的SQL注入总结所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。