当前位置: 首页 > Linux

sql注入

时间:2023-04-07 00:07:53 Linux

楼下运行实验按照实验楼的步骤安装dvwa,安装完成后登录,将运行级别改成低进入sql注入,在input中输入1'orderby1#boxtoquery在users表中,user_id为1的数据,按照第一列的数据排序。此时数据显示正常。当按3#输入1'order时,出现如下界面,说明数据表只有两列数据,我们可以使用union组合查询,union可以将两个或多个select语句的查询结果组合成一个结果集进行展示,并进行联合查询。请注意,联合查询需要与主查询具有相同的列数。如果database()被过滤了,可以使用如下语句查询当前所有数据库输入1'//union//select//schema_name//from//information_schema.schemata//where/**/'1'='1input1'unionselectdatabase(),user()#database()返回当前网站使用的数据库名,user()返回执行当前查询的用户名然后输入1'unionselectversion(),@@version_compile_os#version()获取当前数据库版本,@@version_compile_os获取当前操作系统。接下来我们尝试获取dvwa数据库中的表名。information_schema是mysql自带的表。这个数据表保存了Mysql服务器所有数据库的信息,比如数据库名,数据库的表,表列的数据类型和访问权限等。数据库有一个名为tables的数据表,其中包含两个字段table_name和table_schema,分别记录存储的表名和表名在DBMS中所在的数据库。输入1'unionselecttable_name,table_schemafrominformation_schema.tableswheretable_schema='dvwa'#,得到dvwa数据库中的guestbook和users数据表。接下来爆破users表的列,enter1'unionselect1,column_namefrominformation_schema.columnswheretable_name='users'#,爆破users表的列,其中最重要的两列是user和password,输入1'unionselectuser,passwordfromusers#,用户名和密码可以爆出。在登录账号页面,也可以试试1'of1=1#amearlymysqlsyntax,#后面的内容会被忽略或者输入1'or'1'='1这个方法需要在两个都输入注入用户名密码框判断sql注入点一般情况下,可能存在Sql注入漏洞的Url类似这样的形式:http://xxx.xxx.xxx/abcd.php?i...主要有两种Sql注入判断方面:判断带参数的Url是否有Sql注入?如果有Sql注入,那是什么Sql注入?在可能存在Sql注入攻击的ASP/PHP/JSP动态网页中,一个动态网页中可能只有一个参数,有时也可能有多个参数。有时是整型参数,有时是字符串参数,不能一概而论。总之,只要是带参数的动态网页,并且网页访问数据库,都有可能存在Sql注入。如果程序员没有足够的安全意识,没有进行必要的字符过滤,SQL注入的可能性就很大。最经典的单引号判断方法:在参数后面加单引号,例如:http://xxx/abc.php?id=1'如果页面返回错误,则有Sql注入。原因是无论字符类型还是整数类型,都会因为单引号的个数不匹配而报错。常用的sql注入技术还包括:使用非主流通道技术避免输入过滤技术使用特殊字符强制错误使用条件语句使用存储过程推理技术