初级安全入门——SQL注入的原理与利用
工具简介
- SQLMAP: 一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多强大的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。
- 常见参数使用
| --sql-shell | 执行SQL命令 |
| --OS-cmd | 执行系统命令 |
| --OS-shell | 与系统Shell交互 |
| -r | 加载外部请求包 |
| --data=DATA | 通过POST发送数据字符串 |
| --proxy=PROXY | 使用HTTP代理链接到目标URL |
| --tamper=TAMPER | 使用给定的脚本篡改注入数据 |
| --current-user | 获取当前用户名称 |
| --current-db | 获取当前数据库名称 |
| --cookie | 设置Cookie值 |
| --dbs | 列出所有数据库 |
| --tables | 列出数据库中的表 |
SQL注入的危害
- 1.绕过登录验证:使用万能密码登录网站后台等。
- 2.获取敏感数据:获取网站管理员帐号、密码等。
- 3.文件系统操作:列目录,读取、写入文件等。
- 4.注册表操作:读取、写入、删除注册表等。
- 5.执行系统命令:远程执行命令。
解决方案
- 1.过滤:通过对SQL关键字和关键符号的过滤来避免SQL注入漏洞的发生
- 优点
业务改动量小,部署方便,是安全防护软件/硬件常用的解决方案。 - 缺点
基于黑名单的工作原理,容易产生误报或被绕过。
- 优点
- 2.编码:基于各类数据库定义的关键字和符号的转义规则将用户输入进行转义后组成SQL语句
- 优点
不影响正常请求且不容易被绕过,OWASP ESAPI项目提供了这种解决方案。 - 缺点
整改需要一定的工作量,需要数据库自身的支持,且理论上仍存在的绕过风险。
- 优点
- 3.预编译:基于各种语言的预编译功能,先将SQL语句进行编译,用户输入的内容只会被当做参数传入,不会被编译为命令
- 优点
从根本上杜绝了SQL发生的可能性。 - 缺点
业务改动量大,建议新开发的项目均采用此种方式避免SQL注入攻击的产生。
- 优点
实验一:通过sql注入获取当前数据库名和mysql登录名
若网站存在sql注入,且具有显示数据功能,那么我们可以通过拼接参数进行表的联合查询来盗取所需数据

构造sql查找回显位置:在url后面加上?id=-1' union select 1,2,3;--+得知回显位置为查询数据集的第二和第三列

构造sql查询当前数据库名和mysql登录名:在url后面加上?id=-1' union select 1,database(),user(); --+

实验二:使用万能密码登录具有sql注入漏洞的网站
万能密码1' or 1=1 limit 1; #(原理在于利用引号的闭合,or运算,以及注释#)登录

实验三:使用Sqlmap获取具有sql注入漏洞的网站的数据库信息(可进行拖库)
使用BurpSuite抓取报文

使用sqlmap -r /etc/test –dbs获取所有数据库名称

初级安全入门——SQL注入的原理与利用的更多相关文章
- 初级安全入门——XSS注入的原理与利用
XSS的简单介绍 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者 ...
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...
- SQL注入的原理以及危害
SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符 ...
- 【渗透课程】第五篇-SQL注入的原理
哈哈哈,讲到注入了.我想给大家讲注入的原理.这个我们前面的前言篇就说过,所谓的SQL注入就是,绕过数据库验证机制直接执行SQL语句.怎么说呢,我们先讲一个概念吧! 网站和网页的区别 单纯的网页是静态的 ...
- 简单说说mybatis是防止SQL注入的原理
mybatis是如何防止SQL注入的 1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterT ...
- PHP代码审计入门(SQL注入漏洞挖掘基础)
SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTT ...
- SQL注入的原理及一般步骤
原理 SQL注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后该字符串传递到SQL Server的实例以进行分析和执行.任何构成SQL语句的过程都应进行注入检查,因为SQL Serv ...
- 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项
我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...
- Java学习笔记47(JDBC、SQL注入攻击原理以及解决)
JDBC:java的数据库连接 JDBC本质是一套API,由开发公司定义的类和接口 这里使用mysql驱动,是一套类库,实现了接口 驱动程序类库,实现接口重写方法,由驱动程序操作数据库 JDBC操作步 ...
随机推荐
- 1. docker 在 macOS 中的架构 2. 在macOS系统中,docker pull 下来的镜像存储在哪里?
docker 在 macOS 中的架构: 在macOS中,docker的实现跟在其它Linux系统中略有不同,在其它Linux系统中,操作系统本身就是docker容器的宿主机,docker镜像都是直接 ...
- C++ Builder使用VC DLL
好久没用BCB了,真的有些陌生了,当然个烂笔头吧. 1 先 implib c:\xxx.lib c:\xxx.dll 生成lib文件 2 #pragma comment(lib,"xxx.l ...
- 阿里云香港B区通过IPV6规避Google验证码
最近买了阿里云香港B来FQ,然而被Google的验证码折磨的死去活来.四处查询,终于找到了一个合适的方案. 添加IPV6支持 阿里云香港是没有IPV6地址的,需要一个tunnel,这边使用HE.NET ...
- spring邮件发送
1,Emaill类: package com.learn.jsp.pojo; /** * 邮件基本信息 * @author kevin * */public class Email { private ...
- sql server 安装时提示要重启
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 打开“Session Manager”文件夹之后在右侧的区域中单 ...
- linux lftp
1.登录 lftp 用户名@站点 口令: 例如: lftp jiangzhaowei@192.168.199.73 口令:****** lftp jiangzhaowei@192.168.199.73 ...
- ubantu 重启mysql
如何启动/停止/重启MySQL一. 启动方式 1.使用 service 启动:service mysql start 2.使用 mysqld 脚本启动:/etc/inint.d/mysql start ...
- 查AIX 版本和系统参数
查AIX版本 atii:[/home/pmts]oslevel -s 7100-01-07-1316 即AIX 7.1版本atii:[/home/pmts]lsdev -C 查CPU个数 (逻辑数目) ...
- JS属性描述符之Object.defineProperty()定义对象属性特性
一.Object.defineProperty的作用 用来给对象新增属性,和修改对象中的属性. 二.JS对象中的描述符 js对象中两种属性描述符:数据描述符和存取描述符(访问描述符). 注意事项: 1 ...
- bzoj4937: [Ceoi2016]popeala
Description 你办了一场比赛,有n给人参加,只有一道题,有m个数据点,标号为1~m,每个测试点都有一个分数a[i].现在所 有选手已经提交了程序并且测评完了,你知道每个人都能通过哪些测试点. ...