sql注入基本原理
科普:解释型 or 编译型语言
语言分类:解释型语言和编译型语言。
解释型语言是一种在运行时由一个运行时组件解释语言代码并执行其中包含的指令的语言。
而编译型语言是代码在生成时转换为机器指令,然后在运行时直接由使用该语言的计算机执行这些指令。
在解释型语言中,如果程序与用户进行交互。用户就可以构造特殊的输入来拼接到程序中执行,从而使得程序依据用户输入执行有可能存在恶意行为的代码。
例如:在与用户交互的程序中,用户的输入拼接到SQL语句中,执行了与原定计划不同的行为,从而产生了SQL注入漏洞。
举例:’or 1=1绕过密码输入直接登录
登录业务系统的SQL语句
select* from admin where username=用户输入的用户名 and password=用户输入的密码
用户输入的内容可由用户自行控制,例如可以输入'or1=1-空格
拼接后的SQL语句
select* from admin where username='or1=1- and password=用户输入的密码
其中or1=1永远为真,-注释后边内容不再执行,因此SQL语句执行会返回 admin表中的所有内容。
危害总结
数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
网页篡改:通过操作数据库对特定网页进行篡改。
网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
破坏硬盘数据,瘫痪全系统。
sqli-labs靶场搭建
可以参考下面文章中的sqli-labs部分
使用权归猪头所以
评论