1.1SQL注入漏洞原理及测试方法

合集下载

简述sql注入漏洞的原理

简述sql注入漏洞的原理

简述sql注入漏洞的原理一、引言SQL注入漏洞是目前互联网上最为常见的安全漏洞之一,它的出现给互联网安全带来了极大的威胁。

本文将从SQL注入漏洞的定义、原理、分类以及防御等方面进行详细介绍。

二、定义SQL注入漏洞是指攻击者通过在Web应用程序中构造恶意的SQL语句,使得Web应用程序将攻击者提交的恶意代码当做正常的SQL语句执行,从而导致数据库被非法访问或被篡改。

三、原理1. SQL语句拼接Web应用程序通常会将用户提交的数据拼接到SQL语句中进行查询或更新操作。

攻击者可以通过构造特定的输入数据来影响拼接后的SQL语句,从而实现对数据库的非法访问或篡改。

2. SQL注释符SQL注释符(--)可以在SQL语句中注释掉后面的内容,攻击者可以通过在输入数据中添加"--"来截断正常的SQL语句,然后添加自己构造的恶意代码。

3. SQL关键字攻击者可以通过在输入数据中添加一些特定的关键字(如OR、AND 等),来影响拼接后的SQL语句,从而实现对数据库的非法访问或篡改。

4. SQL特殊字符SQL语句中有些特殊字符(如单引号、双引号等)在拼接时需要进行转义,否则会导致SQL语句出错。

攻击者可以通过在输入数据中添加未经转义的特殊字符,来影响拼接后的SQL语句,从而实现对数据库的非法访问或篡改。

四、分类1. 基于错误消息的注入攻击者通过构造恶意的输入数据,使得Web应用程序在执行SQL语句时出现错误,并将错误消息返回给攻击者。

攻击者可以通过分析错误消息来获取数据库中的敏感信息。

2. 基于时间延迟的注入攻击者通过构造恶意的输入数据,使得Web应用程序在执行SQL语句时出现时间延迟。

攻击者可以通过分析时间延迟来获取数据库中的敏感信息。

3. 盲注注入盲注注入是指攻击者无法直接获取数据库中的敏感信息,但可以通过构造恶意的输入数据来判断某些条件是否成立。

攻击者可以通过构造恶意输入数据来判断管理员账户是否存在。

sql注入攻击的原理

sql注入攻击的原理

sql注入攻击的原理SQL注入攻击利用了应用程序未能正确过滤或转义用户输入的漏洞,从而在应用程序与数据库之间的SQL语句中插入恶意代码。

攻击者通过在用户输入的数据中添加特殊的SQL语法符号,可以修改原始的SQL查询逻辑或者执行非授权的操作。

攻击的原理是当应用程序使用拼接字符串的方式将用户输入与SQL语句进行组合时,若没有对用户输入进行合适的过滤或转义,那么攻击者就可以在用户输入中插入SQL命令,从而改变原始的SQL查询的意图。

例如,考虑一个登录页面,用户输入用户名和密码,应用程序将用户输入的用户名和密码直接拼接到SQL查询语句中,如下所示:```SELECT * FROM users WHERE username = '<user_input>' AND password = '<pass_input>'```如果应用程序没有正确过滤或转义用户输入,攻击者可以在用户名或密码字段中插入SQL命令。

例如,如果攻击者在用户名字段中输入`' OR '1'='1`,那么SQL查询语句将变成:```SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '<pass_input>'```由于`'1'='1'`始终为真,攻击者可以绕过身份验证,并获取到所有用户的记录。

SQL注入攻击也可以用于执行其他恶意操作,如数据泄露、数据库修改、执行任意操作等,具体取决于攻击者的意图和应用程序对数据库的访问权限。

为了防止SQL注入攻击,应用程序应该使用参数化查询或预编译语句来执行数据库操作,以确保用户输入被正确转义或过滤,从而防止恶意的SQL代码的注入。

此外,还应该对用户输入进行合法性验证,只接受符合预定格式的数据,以降低攻击的风险。

sql注入漏洞

sql注入漏洞

sql注⼊漏洞数据定义语⾔DDL⽤于定义数据库结构,数据操作语⾔DML⽤于对数据库进⾏查询或更新。

⼀、注⼊原理产⽣SQL注⼊漏洞的根本原因在于代码中没有对⽤户输⼊项进⾏验证和处理便直接拼接到查询语句中。

利⽤SQL注⼊漏洞,攻击者可以在应⽤的查询语句中插⼊⾃⼰的SQL代码并传递给后台SQL服务器时加以解析并执⾏。

⼆、寻找注⼊点如果对⼀个⽹站进⾏SQL注⼊攻击,⾸先需要找到存在SQL注⼊漏洞的地⽅,也就是注⼊点。

可能的SQL注⼊点⼀般存在于登陆页⾯、查找页⾯、或添加页⾯等⽤户可以查找或修改数据的地⽅。

寻找注⼊点的思想,就是在参数后插⼊可能使查询结果发⽣改变的SQL代码。

如果插⼊的代码没有被数据库执⾏,⽽是当作普通的字符串处理,那么应⽤可能是安全的,如果插⼊的代码被数据库执⾏了,通常说明该应⽤存在SQL注⼊漏洞。

GET型的请求最容易被注⼊。

通常关注ASP、JSP、CGI或PHP的⽹页,尤其是URL中携带参数的。

1. 单引号法在url参数后添加⼀个单引号,若存在⼀个注⼊点则通常会返回⼀个错误。

2. 永真永假法与上⼀个永真式,逻辑不受影响,页⾯应当与原页⾯相同;与上⼀个永假式,会影响原逻辑,页⾯可能出错或跳转。

三、SQL注⼊1. LOW发现报错,接下来进⾏⾃动化注⼊。

使⽤sqlmap-u url进⾏测试的时候,意味着要访问sqli页⾯,需要通过login.php优先登录,登录后才可以访问。

因此,需要获取登陆权限才可以访问。

在利⽤sqlmap之前,需要打开本地代理服务器,kali⾥,内置了SQLmap、Paros Proxy、Burp Suite等软件),选⽤Pars。

分析源码,可以看到没有对参数做任何的过滤,直接带⼊数据库进⾏查询,分析sql查询语句,可能存在字符型sql注⼊。

判断sql是否存在存⼊,以及注⼊的类型:1' and '1'='1猜解SQL查询语句中的字段数1' order by 2#1' order by 3#从上⾯两个图可以说明,SQL语句查询的表的字段数是2查询当前的数据库,以及版本:1' union select version(),database()#获取数据库中的表:1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#获取表中的字段名:1' union select 1, group_concat(column_name) from information_schema.columns where table_name='users'#获得字段中的数据:1' union select user,password from users#四、SQL注⼊实践 通过Sqlmapmap进⾏⾃动化注⼊。

SQL注入漏洞的检测方法与修复实例

SQL注入漏洞的检测方法与修复实例

SQL注入漏洞的检测方法与修复实例随着互联网的发展,数据库安全问题变得越来越重要。

SQL注入是常见的数据库安全漏洞之一,它可以导致数据泄露、篡改或破坏,对个人隐私和商业机密造成严重威胁。

本文将介绍SQL注入的检测方法和修复实例,帮助读者更好地保护数据库安全。

一、SQL注入的概念与原理SQL注入是通过在Web应用程序中注入恶意的SQL代码,从而影响数据库的执行。

攻击者通过构造特定的输入,绕过应用程序的输入验证,将恶意代码作为有效的SQL语句执行。

这样就可以访问、修改或删除数据库中的数据,甚至获取敏感信息。

二、SQL注入的常见类型1. 基于布尔的盲注注入:攻击者通过不断猜测数据库的真假条件语句,逐渐获取数据库的信息。

2. 基于时间延迟的盲注注入:攻击者通过构造特定的SQL语句,使数据库在执行时延迟,从而间接获取信息。

3. 堆叠注入:攻击者在SQL语句中嵌入多个查询,以实现多次执行的效果,进而获取或篡改数据。

4. UNION注入:攻击者利用UNION操作符将恶意代码与正常查询结果进行合并,从而获取额外的信息。

三、SQL注入的检测方法1. 输入验证与过滤:对用户输入进行验证与过滤,确保输入的数据符合预期的格式和内容。

这包括正确使用正则表达式验证、转义特殊字符等。

2. 参数化查询:使用参数化查询方式,在SQL语句执行之前,将输入参数与查询命令分离,确保输入不被当作代码执行。

这样可以有效防止SQL注入攻击。

3. 最小化权限原则:将应用程序连接数据库的账号权限设置为最低权限,确保攻击者无法执行危险的操作。

4. 安全审计日志:记录应用程序的运行日志,包括请求参数、SQL 语句等信息,以便及时检测和追踪SQL注入攻击。

5. 使用WAF(Web应用程序防火墙):配置和使用WAF,可以对HTTP请求进行监控和过滤,防止SQL注入等攻击。

四、SQL注入的修复实例以下是一个常见的SQL注入漏洞修复实例:假设有一个用户登录功能,用户输入用户名和密码进行登录,后台的SQL查询语句如下:```sqlSELECT * FROM users WHERE username='$_POST['username']' AND password='$_POST['password']';```这个查询语句存在严重的SQL注入漏洞,攻击者可以通过构造恶意的输入,绕过登录验证。

SQL注入漏洞原理分析

SQL注入漏洞原理分析

现在我要告诉大家,我们一直说SQL。到底什么是SQL呢?SQL就是数据库查询语言。他是一种语言,他的作用就是用来查询数据库,简单的有select,update等等
3.SQL注入的危害性
根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQl占了20%,其他的不足10%。
3. 该SQL语句所查询的表中有一名为ID的字段。
从上面的例子我们可以知道,SQL注入的原理,就是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取你想到得到的资料。
第二节、判断能否进行SQL注入
看完第一节,有一些人会觉得:我也是经常这样测试能否注入的,这不是很简单吗?
这句语句很简单,但却包含了SQLServer特有注入方法的精髓,我自己也是在一次无意的测试中发现这种效率极高的猜解方法。让我看来看看它的含义:首先,前面的语句是正常的,重点在and user>0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个 nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,呵呵,abc正是变量user的值,这样,不废吹灰之力就拿到了数据库的用户名。在以后的篇幅里,大家会看到很多用这种方法的语句。
数据库查询是select * from 表名 where 字段=49 and [查询语句]
4.sql注入的一般步骤
如果你以前没试过SQL注入的话,那么第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

SQL注入漏洞原理分析

SQL注入漏洞原理分析

SQL注入漏洞原理分析1.SQL语句拼接:在Web应用程序中,常常使用动态生成的SQL查询语句来与数据库交互。

一种常见的方式是将用户输入的数据直接拼接到SQL语句中。

例如,一个登录应用程序可能会使用以下SQL查询语句来验证用户的凭据:```SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码'```如果攻击者能够输入特殊字符作为用户名或密码,就可以修改原始SQL查询语句的结构,从而执行非法的操作。

2.构造恶意的输入:攻击者可以通过输入特殊字符来构造恶意的查询语句,以绕过应用程序的身份验证和访问控制机制。

例如,考虑以下输入:```'OR1=1;--```将该输入作为用户名或密码传递给上述SQL查询语句,将导致查询语句变为:```SELECT * FROM users WHERE username = '' OR 1=1; --' AND password = '输入的密码'```由于1=1的条件始终成立,这将绕过用户名和密码的验证,并返回所有用户的记录。

攻击者可以利用这种漏洞来执行其他恶意操作,如数据库的读写和删除。

3.盲注:在一些情况下,攻击者无法直接获取查询结果,但可以推断出一些信息。

这被称为盲注注入。

例如,应用程序可能会通过一些参数从数据库中检索敏感信息,如用户的电子邮件地址。

如果攻击者能够推断出正确的查询条件,他们可以构造恶意的输入来绕过访问控制机制,并获取目标用户的电子邮件地址。

4.预编译语句和参数化查询:预编译语句和参数化查询是一种防止SQL注入攻击的有效措施。

在这种方法中,应用程序将查询语句和用户输入分开处理,通过将用户输入作为参数传递给预编译语句来执行查询。

参数化查询使用参数绑定而不是字符串拼接,从而避免了SQL注入漏洞。

SQL注入漏洞

SQL注入漏洞

SQL注⼊漏洞SQL注⼊:web程序对⽤户输⼊数据的合法性没有判断,前端传⼊后端的参数可控的,并且参数带⼊数据库查询,攻击者可通过构造SQL语句来实现对数据库的任意操作。

1.sql注⼊原理满⾜条件:参数⽤户可控:前端传⼊后端的内容⽤户可以控制参数带⼊数据库查询:传⼊的参数拼接到SQL语句,且带⼊数据库查询。

原因:⽤户输⼊的数据被SQL解释器执⾏2.注⼊漏洞分类1)数字型注⼊当输⼊的参数为整型时,如:ID、年龄、页码,若存在注⼊漏洞,则可认为是数字型测试:单引号 and语句(1 and 1=1 , 1 and 1=2),若以上三个步骤全部满⾜,则可能存在SQL注⼊漏洞数字型注⼊常出现在ASP、PHP等弱类型语⾔。

强类型语⾔,若试图把⼀个字符串转换为int类型,会抛出异常,⽆法继续执⾏。

2)字符型注⼊当输⼊参数为字符串时,称为字符型。

数字型与字符型注⼊最⼤的区别:数字型不需要单引号闭合,⽽字符型⼀般使⽤单引号来闭合。

字符型注⼊最关键的是如何闭合SQL语句以及注释多余的代码。

注:数据库不同,字符串连接符不同, SQL server的连接符为“+”,Oracle连接符为“||”,MySQL连接符为空格3)SQL注⼊分类SQL只分为两类数字型和字符型。

其余注⼊都是在其两⼤类的不同展⽰形式,或者不同的展现位置。

由于数据库进⾏数据查询时,输⼊数据⼀般有两种:⼀种数字型,⼀种字符串型. 严格来说:数字也算字符串post注⼊:注⼊字段在post数据中(post请求中username字段存在注⼊漏洞)get注⼊:注⼊字段在get数据中cookie注⼊:注⼊字段在cookie数据中延时注⼊:使⽤数据库延时特性注⼊(sleep函数)搜索注⼊:注⼊处为搜索的地点base64注⼊:注⼊字符串需要经过base64加密3.常见的数据库注⼊数据库注⼊的利⽤⽅式:查询数据、读写⽂件、执⾏⽂件mysqlmysql数据库 5.0之后,默认在数据库存放 information_schema 的数据库,在该库中存在三个表名schemata 表⽰存储⽤户创建的所有数据库的库名tables 。

sql注入漏洞原理、常见测试方法及防御方法

sql注入漏洞原理、常见测试方法及防御方法

sql注入漏洞原理、常见测试方法及防御方法SQL注入漏洞原理:SQL注入是一种利用Web应用程序中未正确过滤、转义或验证用户输入的漏洞,允许攻击者执行恶意的SQL语句。

攻击者可以通过在输入中插入特定的注入代码来修改应用程序的SQL查询,或者绕过身份验证、绕过访问控制或直接获取敏感信息。

常见的SQL注入测试方法:1. 基于错误的盲注:场景是当应用程序返回错误消息时,攻击者可以通过插入错误的语句来诱使应用程序返回不同的错误消息。

通过观察错误消息,攻击者可以推测出数据库结构和内容。

2. 基于时间的盲注:场景是当应用程序有时间延迟时,攻击者可以通过插入一些导致延迟的语句来判断SQL语句的执行结果。

通过观察应用程序的响应时间,攻击者可以推测出一些敏感信息。

3. 基于布尔的盲注:场景是当应用程序返回不同的响应内容时,攻击者可以通过插入布尔语句来判断SQL语句的执行结果。

通过观察应用程序的响应内容,攻击者可以推测出一些敏感信息。

防御方法:1. 输入验证和过滤:对用户输入的数据进行验证和过滤,确保只有合法的数据被传递给SQL查询。

可以使用编程语言内置的验证函数,或采用正则表达式进行输入过滤。

2. 使用参数化查询或预编译语句:通过使用参数化查询或预编译语句,可以确保用户输入的数据被正确地转义和处理,从而避免SQL注入漏洞。

3. 最小权限原则:数据库用户应该被授予最小的权限,以限制其对数据库的访问。

具体来说,应该禁止数据库用户执行DDL语句,只允许执行必要的DML操作。

4. 异常处理:在应用程序中正确处理异常,不要将详细的错误信息暴露给攻击者。

错误信息应该记录在日志中,而不是直接显示给用户。

5. 定期更新和修补:及时更新和修补数据库和应用程序中的安全漏洞,以确保系统的安全性。

同时,定期进行安全审计和漏洞扫描,及时发现和修复潜在的SQL注入问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
判断注入方式
内联式SQL注入 内联注入是指查询注入SQL代码后,原来的查询仍然 全部执行
Sqlstr = "select * from admin where username = '"+username+"' and password = '"+password+"'" username = "' or ''='" password = "' or ''='"
§ 万能列类型:
• 大部分数据库中NULL可兼容任何类型的数据,所有可使用NULL 匹配数据表的列类型
§ 确定列数量:
• 使用union select null,null,null,…,null from dual逐步增 加null数量,直到匹配原语句的列数量,成功匹配后返回正常 页面 • 使用order by 确原语句列数量, 可使用折半查找法提高猜测 效率
注入方法(union)
v 使用union获取数据规则
§ 两个查询返回的列数必须相同。 § 两个SELECT语句返回的数据库对应的列必须类型 相同或兼容 § 通常只有终止式注入时,可较快猜解并利用,否 则要知道原始的SQL语句才能比较方便的利用
注入方法(union)
v Union语句的构建
识别数据库类型
v 使用字符连接方式判断数据库类型
§ MSSQL数据库
http://host/test.php?id=100 and ‘1’+’1’=‘11’ § MySql数据库 http://host/test.php?id=100 and ‘1’+’1’=‘11’ http://host/test.php?id=100 and CONCAT(‘1’,’1’)=‘11’ § Oracle数据库 http://host/test.php?id=100 and ‘1’||’1’=‘11’ http://host/test.php?id=100 and CONCAT(‘1’,’1’)=‘11’
20
识别数据库类型
要成功的发动SQL注入攻击,最重要的是知道 应用正在使用的DBMS。没有这一信息就不可能向 查询注入信息并提取自己所感兴趣的数据 原因:不同数据库之间存在语法差异和特性
识别数据库类型
v 常见构架判断数据库类型
§ asp + access § asp + mssql § + mssql § php + mysql § Jsp + oracle § Jsp + mysql
基础
v SQL (Structured Query Language) :结构化的查询 语言,是关系型数据库通讯的标准语言。 查询:Select statement from table where condition 删除记录:delete from table where condition 更新记录:update table set field=value where condtion 添加记录:insert into table field values(values)
sqlstr = "select * from news where id = '" + request.getParameter("name") + "'"
三种注入类型测试方法
搜索型 测试方法: http://host/test.php?keyword=test%’ and ‘%’=‘ 返回test查询相同结果 http://host/test.php?id=test%’ and ‘%’=‘ 返回少于test 查询结果的 内容 产生原因:
注入方法(union)v Unioຫໍສະໝຸດ 注入结果注入方法(union)
v Union不适用的地方
§ 注入语句无法截断,且不清楚完整的SQL查询语句 § Web页面中有两个SQL查询语句,查询语句的列数 不同
注入方法(盲注)
v 基于时间的攻击
§ MSSQL http://host/products.asp?id=12;if +(system_user=‘sa’)+waitfor+delay+’0:0:5’-http://host/products.asp?id=12;if +(system_user=‘sa’)+exec master..xp_cmdshell’ping localhost’ § Mysql select benchmark(1000000, sha1(‘test’)) //执行sha1函数1000000次 § Oracle select utl_http.request(‘http://10.0.0.1’) from dual
sqlstr = "select * from news where id = " + request. getParameter("id")
三种注入类型测试方法
字符型 测试方法: http://host/test.php?name=rainman’ and ‘1’=‘1 返回成功 http://host/test.php?name=rainman’ and ‘1’=‘2 返回失败 产生原因:
v 基础 v 常规利用过程 v 判断方法 v 注入类型测试方法 v 判断注入方式 v 辅助测试工具 v 识别数据库类型 v 注入方法 v 枚举数据库
17
辅助测试工具
手工测试工具 - Burp suite
辅助测试工具
手工测试工具 - HackBar
v 基础 v 常规利用过程 v 判断方法 v 注入类型测试方法 v 判断注入方式 v 辅助测试工具 v 识别数据库类型 v 注入方法 v 枚举数据库
v 基础 v 常规利用过程 v 判断方法 v 注入类型测试方法 v 判断注入方式 v 辅助测试工具 v 识别数据库类型 v 注入方法 v 枚举数据库
7
如何判断
v 最简单的测试
§ http://host/test.php?id=100’ 返回错误 § http://host/test.php?id=100 and 1=1 返回正常 § http://host/test.php?id=100 and 1=2 返回错误
§ 确定列类型:
• Union select 1,’2’,null,…,null from dual,先猜测第一 列为数字,如果不正确则判断为字符,如果还是不正确则保 持null不变(可能为二进制类型),依次完成部分或全部类型 的判断
§ 其他:
• Mysql数字/字符类型可直接转换,可直接使用select 1,2,3,…,n 方式构建union
v 基础 v 常规利用过程 v 判断方法 v 注入类型测试方法 v 判断注入方式 v 辅助测试工具 v 识别数据库类型 v 注入方法 v 枚举数据库
26
注入方法(union)
v 使用union获取数据
Union是数据库管理员经常使用且可以掌控 的运算符之一,可以使用它连接两条或多条selec t语句的查询结果。其基本语法如下:
判断注入方式
终止式SQL注入
终止式SQL语句注入是指攻击者在注入SQL代码时,通 过注释剩下的查询来成功结束该语句。被注释的查询 不会被执行
Sqlstr = "SELECT * FROM admin WHERE username = '"+username+"' and password = '"+password+ "'" username = “’ or ‘’=‘’ --“ password = “any string” 常见的终止方式
sqlstr = "select * from news where keyword like '%" + request. getParameter("keyword") + "%'"
v 基础 v 常规利用过程 v 判断方法 v 注入类型测试方法 v 判断注入方式 v 辅助测试工具 v 识别数据库类型 v 注入方法 v 枚举数据库
识别数据库类型
v 判断数据库类型
§ 使用一些特征判断数据库类型 报错信息: Oracle: ORA-01756: 括号内的字符串没有正确 结束 Mysql: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near MSSQL: [Microsoft][ODBC SQL Server Driver ][SQL Server]字符串’’之前有未闭合的引号
• 终止字符串: -- , #, %23, %00, /* • 终止方法: -- , ‘-- , ‘)-- , ) -- , ‘)) --, ))--
注入点在哪里?
触发SQL注入
所有的输入只要和数据库进行交互的,都有 可能触发SQL注入 常见的包括: 1. Get参数触发SQL注入 2. POST参数触发SQL注入 3. Cookie触发SQL注入 4. 其他参与sql执行的输入都有可能进行SQL注入
识别数据库类型
v 判断数据库类型
§ 通过特有数据表进行判断 MSQQL数据库: http://host/test.php?id=100 and (select sysobjects)>0 and 1=1 Access数据库: http://host/test.php?id=100 and (select msysobjects)>0 and 1=1 Mysql数据库: http://host/test.php?id=100 and (select information_schema. TABLES)>0 and 1=1 > 5.0 Oracle数据库: http://host/test.php?id=100 and (select er_tables)>0 and 1=1 count(*) from count(*) from count(*) from mysql count(*) from
相关文档
最新文档