引言:SQL注入是一个老生常谈且又非常重要的漏洞,导致许多热点的数据泄露事件。尽管学习起来相对简单,但它可能用于某些高危漏洞的利用。这使得它成为初学者的兴趣点,甚至对于更有经验的用户来说,SQL注入也是基本知识。
1. 简介
SQL注入是一种利用应用程序对用户输入的处理不当,使恶意用户能够执行未经授权的SQL查询的行为。当应用程序从用户那里接收输入并将其直接用作SQL查询的一部分时,就可能发生SQL注入,使得攻击者能够干扰应用程序对数据库的正常查询,甚至可访问敏感数据,引起数据泄露。
SQL注入根源:
- 执行外部参数拼接的SQL语句;
- 执行外部传入的整条SQL语句;
- 在配置文件中的SQL语句没有使用预编译方式占位符;
- 校验函数有缺陷或占位符使用错误。
比如,通过输入"1 and version() > 0"
,若应用程序正常返回,说明version()
被数据库识别并执行。因version()
是Mysql特有的函数,所以可以推断出后台数据库为Mysql。
Note:不同数据库的注入点可以查阅https://portswigger.net/web-security/sql-i