Mysql必读Mysql数据库使用concat函数执行SQL注入查询
《Mysql必读Mysql数据库使用concat函数执行SQL注入查询》要点: SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来.MYSQL数据库 例如:原本查询语句是 select username,email,content from test_table where user_id=uid; 其中uid,是用户输入的.正常显示结果会出现用户名,用户邮箱,用户留言内容.但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息. 代码如下: uid=-1 union select username,password,content from test_talbe where user_id=管理员id; 实际执行就是 代码如下: select username,content from test_table where user_id=-1 union select username,content from test_talbe where user_id=管理员id; 其中显示正常用户emai的地方,变成了显示管理员的密码了. 但是,往往事情并不是这么简单,首先要找到漏洞,其次构造这种语句时候要考虑各个字段的类型,让int或samllint类型的字段显示varchar显然不合适.最后就是本文要说的.MYSQL数据库 如果出现问题的SQL语句只有一个或两个字段怎么办,我们想知道很多东西,一两个字段太少了,远远不能满足我们的需要.那么我们可以使用concat函数.MYSQL数据库 concat函数本来是这样用的SELECT CONCAT('My','S','QL');执行结果是'MySQL'.也就是连接作用的.我们利用它来为我们服务, uid=-1 union select username,concat(password,sex,address,telephone),content from test_talbe where user_id=管理员id; 这个语句实际查询了六个字段,但是显示的时候,把password,telephone等字段合在一起,显示在原本应该显示email的地方. 更好的方法:中间用分隔符分开: uid=-1 union select username,0×3a,content from test_talbe where user_id=管理员id; 其中0×3a是“:”的十六进 制形式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |