SQL注入简介

一、sql注入概述

sql注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的sql语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

二、sql注入原理

sql注入需要满足两个条件:

参数用户可控:前端传给后端的参数内容是用户可以控制的。

参数带入数据库查询:传入的参数拼接到sql语句,且带入数据库查询。

三、相关知识

1.默认的库、表

例如mysql5.0以后,有一个默认的库information_schema,里面存放了大量的信息,其中:

SCHEMATA:该表中存放了mysql实例中所有数据库的信息。

TABLES:该表提供了序数据库中表的信息。详细描述了每个库中包含的表的名字、类型、创建时间等信息。

扫描二维码关注公众号,回复: 11597822 查看本文章

COLUMNS:该表提供了表中列的信息。详细描述了某张表的所有列以及每个列的信息。
2.默认函数和表达式

Version() 数据库版本
Database() 当前数据库名
User() 当前登录用户
system_user() 系统用户名
current_usre() 当前用户名
session_user 连接数据库的用户名
@@datadir 读取数据库路劲
@@basedir mysql安装路径
@@version_compile_os 查看操作系统版本
@@hostmane 计算机名
@@character_set_database 显示字符集

3.注入点查找 

四、sqlmap基础命令

sqlmap是用于sql注入的工具,在发现注入点后,就可以通过sqlmap获取到数据库中的信息。命令如下:

sqlmap -u “注入点URL” :查询该点是否存在注入

检查到注入点后,就可以接以下参数,进行注入:

--dbs 检测站点包含哪些数据库
--current-db 获取当前的数据库名
--tables-D"db_name" 获取指定数据库中的表名-D后接指定的数据库名称
--columns-T"table_name"-D"db_name" 获取数据库表中的字段
--dump-C"columns_name"-T"table_name"-D"db_name" 获取字段的数据内容
--purge 重新扫描(--purge 删除原先对该目标扫描的)
--current-user 检测当前用户
 --is-dba 判断站点的当前用户是否为数据库管理员
 --batch  默认确认,不询问你是否输入
 --threads 10  线程,sqlmap线程最高设置为10
 --level 3  最高为5
--risk 3 默认为1。risk越高,越慢但是越安全
--privileges 查看权限
--cookie"cookie" 添加cookie进行注入
--referer 使用referer欺骗
--user-agent 自定义user-agent

猜你喜欢

转载自blog.csdn.net/weixin_47931795/article/details/108397484