教师：好的, 现在我将向您展示一个SQL注入,
它位于不同的文件和不同的页面中, 我将向您展示一些您可以用来利用漏洞的不同操作｡
我首先要进入登录页面,
它就在这里｡
用户信息
第一次我们从那里进入“登录”页面时, 这次我们进入了“用户信息”页面｡
因此, 如果您提供用户名和密码,
此页面将显示有关用户的信息｡
所以我会输入zaid然后输入密码123456｡
它会显示我的详细信息, 用户名和密码, 我的签名为aa｡
这里执行的语句与登录时执行的语句类似｡
因此, 从帐户中选择star,
其中用户名是您在用户字段中输入的内容, 密码是您在密码字段中输入的内容｡
所以我们现在要做的是,
我们将看到一种利用这种漏洞的不同方式｡
在上一个视频中,
我们使用POST文本框来执行此操作｡
因此, 您在文本框中输入的任何内容都将使用POST方法发布到Web应用程序｡
现在, GET中可能存在这些漏洞｡
我所说的Get,
是指当你执行Get时, 当某个东西作为GET发送时,
你会在URL中看到它｡
如果你看一下这里的URL,
你会发现它是以用户名zaid和密码123456发送的｡
让我复制这个网址｡
我们将从URL开始,
而不是在网页上进行｡
我只想给你们看一个不同的例子因为在很多地方,
甚至可能没有文本框, 例如,
它可能是新闻和新闻之类的东西｡
php,
所以我们可以看到, 例如, 在这个例子中, 它是index｡ php的值｡
在笔测试中, 你可能会看到类似新闻的东西｡
比如,
id等于2, 然后你可以试着在里面注入一些东西｡
这里有一个例子,
我们要将内容注入到用户名字段,
也就是这个字段, 我们要在这里注入内容.
所以当你在做笔测试的时候, 当你看到这样的参数的时候,
你应该试着注入它们｡
只要你看到什么｡ 然后你有一个参数等于某个东西,
然后总是尝试在那里注入东西,
看看它是否对你有效｡
我们也看到了一种发现注入的方法,
那就是使用引号和和｡
因此, 我们执行一个false和一个true,
然后, 一等于一, 然后,
一等于二, 如果服务器正在执行我们想要的,
那么我们就知道有SQL注入｡
我将向您展示另一种发现这些漏洞的方法,
它使用order by｡
顾名思义, order
by语句用于根据特定列对屏幕上显示的结果进行排序｡
所以我们的注射是这样的｡
所以我要一个人点餐｡
因此, 如果注入存在, 这应该可以工作,
因为在每个选择语句中, 应该至少有一个列被选择｡
因此, 当我们说order
by one时, 我们是说我希望根据第一列对结果进行排序,
因此, 这应该总是数据库可以接受的｡
并返回一个true或我们期望的值｡
我们还需要在此处添加注释并执行此代码｡
所以和以前一模一样｡
当我们这样做的时候,
基本上这是我们的URL和将要在数据库上发生的事情, 所以这是在数据库上执行的代码,
看起来像这样｡
这将是select star
from accounts,
其中username等于zaid,
请注意这是如何结束引号的, 我们将按1进行排序,
不应该有和的代码, 此注释将告诉SQL解释器忽略它后面的任何内容, 因此所有这些内容都将被忽略｡
所以我在复制这个｡
你可以把zaid的这个注入顺序一个接一个地粘贴到这个名字里,
这样就可以了, 但是我还是要告诉你一种不同的方法, 通过浏览器注入.
我想让你注意的另一件事是当你把东西注入浏览器时,
浏览器, 代码应该被编码｡
举个例子, 这个符号通常, 当你把它放在网址上的时候,
它应该写为%23｡
例如, 空格被转换为%20,
而%23是我们正在使用的注释｡
所以我要复制它并用它替换我的评论标志｡
现在, 你可以谷歌HTTP编码器,
你会看到在线有在线工具,
只是转换为您｡
对我来说, 现在我知道这个标签可以转换成%20｡
所以我才在这里用它｡
然后按回车键｡
正如你现在所看到的,
我们看到了一些可以接受的东西｡
没什么问题, 然后它给我看了关于扎伊德123456的信息,
并给我看了签名｡
它忽略了密码, 所以注入成功了,
它是按1排序的,
所以它不会显示任何错误｡
让我们试着把这个数字1设为一个很大的数字, 所以我现在输入10,
000或100, 000｡
所以我们现在要说的是,
我希望你根据列100, 000对当前select语句返回的结果进行排序｡
现在, 在这个select语句中使用的列可能不是100,
000, 因此应该返回一个错误｡
所以当我执行这个命令时,
你会看到有一个错误｡
而错误是在订单关闭｡
仍然有一个未知列表示100, 000, 这很好,
因为现在我们知道数据库正在执行我们想要的｡
因此, 当我们告诉它根据第一列对结果进行排序时,
它向我们显示了结果｡
所以它按照我们告诉它的去做,
然后当我们告诉它根据一个不存在的列对结果排序时,
它给了我们一个错误｡
因此, 它显然容易受到SQL注入的攻击｡