文章介绍
前段时间,它模仿了一个钓鱼网站。钓鱼网站肯定需要存储数据,而要存储数据,就需要与数据库进行交互。与数据库交互不会出现问题,但是如果与数据交互时不过滤特殊字符;那么网站就会存在SQL注入漏洞,存在被数据库暴露的风险。下面我们就用这个“钓鱼网站”搭建一个“SQL注入环境”没有注入点的网站如何入侵,详细讲解一下SQL注入漏洞。
工具使用介绍
使用 SQL 注入构建钓鱼网站
首先运行PHPWAMP启动默认(Apache+mysql+php)环境,把“钓鱼网站”的源码全部放在网站根目录下。然后点击浏览网站,查看钓鱼网站是否搭建成功。页面如下。钓鱼网站为了搭建简单,一般会在本地创建一个MDB文件,然后使用脚本程序连接和读写MDB文件,所以把“钓鱼网站”的源码丢到了钓鱼网站的根目录下网站,无需配置数据库,直接使用即可。
访问钓鱼网站后台
“钓鱼网站”的后台位于网站根目录下的123目录下,因为“断刀流”是本地搭建的“钓鱼网站”。所以直接127. 0.0.1加123目录访问,网站后台账号密码为admin 注:搭建这个钓鱼网站的目的是让你知道“SQL注入漏洞”,不是让你学习网络钓鱼。
SQL 注入漏洞
“钓鱼网站”是因为在执行某些操作时没有添加特殊字符过滤。网站会将用户输入的字符直接带入数据库并执行。将用户输入的数据带入数据库并不可怕,但可怕的是;由于网站没有特殊的字符过滤机制,攻击者可以构造特定的SQL语句,然后输入特定的SQL语句,并传递给数据库执行。这些特定的语句会对网站造成什么样的攻击,取决于攻击者的最终目标。
万能密码登录后台
和常用的网站后台万能密码一样,万能密码是已经构建好的特定SQL语句。在“钓鱼网站”的登录后台输入('or '1'='1)具体的SQL语句,然后点击立即登录按钮。输入的具体SQL语句在数据库中执行后,会直接登录成功,跳转到后台管理页面,早些年的“万能密码”还是蛮厉害的,但是随着网络安全意识的提高,防止SQL注入的手段越来越多复杂。
网站后台正常登录SQL语句分析
当用户点击登录时,网页会先获取用户输入的登录账号和密码,然后形成SQL查询语句。通过脚本程序连接数据库,检查数据库中是否有这个账号,如果有这个账号,检查密码是否正确。如果账号和密码正确,返回true,否则返回false。代表SQL语句:
从*中选择
管理员在哪里
admin='admin' 和 password='admin'
万能密码异常登录SQL语句分析
万能密码之所以能成功登录后台,是因为“钓鱼网站”没有过滤掉双引号、单引号、空格等特殊符号……例如:下面的admin= 'content',单引号内 本来想输入登录账号的。结果输入的内容被构造成特殊语句('or '1'='1)没有注入点的网站如何入侵,特殊语句中有单引号。特殊语句中的单引号,关闭前面就行了单引号 (admin = ' ')。
然后(或'1'='1)展开SQL查询语句。当SQL语句执行完之后,无论登录账号密码是否正确,都会返回真正的登录成功。因为( or '1'='1) 这句话影响SQL语句原来的执行方向,or(or)的意思是,只要有一个条件为真,就直接返回真,下面的1=1绝对正确。
从*中选择
管理员在哪里
admin =''or '1'='1' and password=''or '1'='1'
SQL注入学习
要想学好“SQL注入”,首先要了解SQL的基本语法。至少你需要了解一些简单的增删改查。如果你根本不懂 SQL 语法,那么你就是在学习“SQL 注入”。过程中,处处都会有限制,学习很痛苦。
这也是很多人开始放弃的原因,他们不喜欢基础的东西,想直接学习高级的东西。学高层次的东西,没有打好基础,结果什么都不懂,学得很痛苦,自信心受到打击。最后只能老老实实的放弃了。
文章相关下载