SQL注入简介

tech2025-04-24  8

一、sql注入概述

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

二、sql注入原理

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

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

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

三、相关知识

1.默认的库、表

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

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

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

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

Version()数据库版本Database()当前数据库名User()当前登录用户system_user()系统用户名current_usre()当前用户名session_user连接数据库的用户名@@datadir读取数据库路劲@@basedirmysql安装路径@@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

 

 

 

最新回复(0)