sql sp_password登录名不存在或 权限_【学习园地】SQL注入专题(一)

1

SQL注入专题(一)

原理:

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。基于此,SQL注入的产生原因通常表现在以下几方面:①不当的类型处理;②不安全的数据库配置;③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

攻击:

当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。

防护:

归纳一下,主要有以下几点:1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。6.sql注入的检测方法一般采取辅助软件或网站平台来检测,MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。 方法: 1、寻找注入点,可以通过web扫描工具或SQL注入工具实现 2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)4、可以通过获得的用户信息,寻找后台登录。5、利用后台或了解的进一步信息,上传webshell或向数据库写入一句话木马,以进一步提权,直到拿到服务器权限。
//手工注入常见payload1' order by 2 --   /*用来猜解查询信息的列数1' and 1=2 union select user(),database(),-- 1' and 1=2 union select user(),version(), -- /*利用user(),database(),version()函数获得数据库信息1'and 1=2 union select 1,@@global.version_compile_os from mysql.user -- /*获得操作系统信息1' and ord(mid(user(),1,1))=114 --  /*测试连接数据库用户权限1' and 1=2 union select 1,schema_name from information_schema.schemata -- /*爆出所有数据库名称1' and exists(select * from users) -- /*猜解表名1' and exists(select first_name from users) -- /猜解字段名1' and 1=2 union select first_name,last_name from users -- /*猜解字段内容

sql sp_password登录名不存在或 权限_【学习园地】SQL注入专题(一)_第1张图片

上期回顾:

【学习园地】SQL Server 2008概述

【学习园地】主流数据库

【学习园地】属于自己的CTF训练场—CTFd平台

【学习园地】Docker容器

【学习园地】数据库设计

【学习园地】企业SRC搭建

【学习园地】关系数据库

初识数据库

自己动手搭建私有云笔记+博客平台

你可能感兴趣的:(sql,权限)