php发展

首页 » 常识 » 常识 » 文库SQL注入知识总结
TUhjnbcbe - 2021/5/7 14:55:00

高质量的安全文章,安全offer面试经验分享

尽在#掌控安全EDU#

作者:掌控安全-veekSQL注入基础

SQL注入(英语:SQLinjection),是发生于应用程序与数据库层的安全漏洞。

简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

OWASPTop10虽然常年有更改,但sql注入基本一直位于榜首,其优势在于极低的使用代价以及极高的危害性,地位可见一斑。

SQL注入的危害自然是很大的,通常有以下这些(来自wiki):

资料表中的资料外泄,例如企业及个人机密资料,账户资料,密码等。

数据结构被黑客探知,得以做进一步攻击(例如SELECT*FROMsys.tables)。

数据库服务器被攻击,系统管理员账户被窜改(例如ALTERLOGINsaWITHPASSWORD=’xxxxxx’)。

获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及Phishing等。

经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell“netstopiisadmin”可停止服务器的IIS服务)。

黑客经由上传php简单的指令至对方之主机内,PHP之强大系统命令,可以让黑客进行全面控制系统(例如:php一句话木马)。

破坏硬盘资料,瘫痪全系统(例如xp_cmdshell“FORMATC:”)。

获取系统最高权限后,可针对企业内部的任一管理系统做大规模破坏,甚至让其企业倒闭。

企业网站主页被窜改,门面尽失。

找到注入点后,sql注入的基本流程如下:

信息收集:数据库类型数据库版本数据库用户数据库权限

获取数据:获取库信息获取表信息获取列信息获取数据

提权:执行命令读文件
  
  
  读取中间件配置文件,读取数据库配置文件写文件
  
  
   写webshell

注入分类及利用布尔型注入

布尔是英文单词Boolean的音译,懂编程的同学应该知道它是用来表示是或否(True或False)的一个数据类型。布尔型注入是在sql注入过程中,根据页面的返回结果来判断条件真假的注入方式。

当查询结果不为空时,返回True,相反返回False。这在网页上的体现通常是True有内容显示,而False对应着空白页面(或者页面无变化)。我们通过这个方式可以挨个猜测表名、字段名和字段值的字符,通过返回结果判断猜测是否正确,因为过程较为繁琐,通常要结合脚本或工具来进行。

例如sqli-labsLess8中,页面返回的只有正确和错误。我们就可以利用布尔型注入来猜解数据。

判断数据库长度的语句,此时页面无显示,说明长度为8:

1
查看完整版本: 文库SQL注入知识总结