教师：好的, 现在我们知道,
我们可以把任何代码放在这里,
它将在系统上执行｡
那么, 现在让我们再看一下声明｡
因此, 该语句表示, select * from accounts,
其中user name等于我们在此处输入的用户名, password等于我们在此处输入的密码｡
让我们看看我们是否可以使用它, 在不使用密码的情况下登录,
甚至不知道密码｡
我会和管理员一起做的｡
管理员, 用户名为admin｡
我也不知道管理员的密码是什么｡
接下来, 我会输入任意值,
什么都不加, 任何随机密码, 在代码中,
我应该在这里运行.
所以我们做, 和1 = 1和, 或, 所以,
我要做的是, 我要做或, 而不是和｡
我会说1 = 1｡
所以, 我们的代码将是什么, 一旦我运行它,
一旦我注入它,
它将进入这里, 就像我们之前做的那样｡
我们的代码应该是这样的｡
从帐户中选择 *, 其中我们的用户名等于admin｡
密码等于AAA｡
这是错误的｡
或者, 1 = 1, 这是正确的｡
因此, 任何时候如果有一个或, 如果或条件是正确的, 那么一切都是正确的｡
这就是陈述的工作方式｡
因此, 从帐户中选择 *｡
我们的用户名等于管理员,
用户名等于管理员｡
密码等于AAA, 这是错误的｡
或者1 = 1, 好吧, 我接受｡
然后, 它实际上会执行它,
让我们登录到管理员, 甚至不知道管理员的密码｡
现在让我们试着把它注射进去｡
如您所见, 我能够以管理员身份登录, monkey是管理员的签名｡
现在, 绕过和登录可以通过很多方式来完成,
这取决于页面上编写的代码｡
这取决于你想用什么方式来做, 以及你是如何想象代码的｡
在很多情况下, 当你在这里加上单引号时,
你不会看到这个消息｡
有时你确实看到了,
这让你的工作轻松多了｡
如果你不知道, 那你就得猜猜它长什么样｡
我再给你们看一个旁路的例子｡
不同于像这样注入代码, admin参数实际上也是可注入的,
正如你所看到的, 当我用单引号引起来的时候, admin参数是可注入的,
与密码的方式完全一样｡
因此, 我们也可以在用户名中注入代码｡
我现在要做的是, 让我们来看看这个,
我把它重新设置成通常的样子｡
所以, 我们有用户名和密码, 在字段中,
无论您在这里输入什么,
都将被替换, 用户名和密码｡
我们试着在用户名中注入一些内容,
我要说得是, 用户名等于管理员,
然后我自己结束引用,
然后添加一条评论.
所以, 我的语句, 当我运行语句时, 它看起来像这样,
我实际上只是把它复制到这里｡
当我注入一个时, 当我把这个代码放在这里, 以我的名义｡
它会把它注入到这里,
代码应该是这样的.
它将选择从帐户开始,
其中用户名等于管理员｡
我自己在这里结束了引用, 就在这里使用了这个｡
然后我添加一条注释, 基本上, 所有这些操作都不会执行,
代码如下所示, 将是select * from
accounts, 其中username等于admin.
它能让我登录而不需要输入任何密码,
我们开始吧.
我将把我的用户名设置为admin,
然后关闭引用并添加评论｡
然后你可以输入任何你想输入的密码｡
我只需要输入#1,
然后登录｡
如您所见, 我设法以管理员身份登录｡
同样, 这是黑盒测试, 所以你实际上看不到代码｡
在很多情况下, 你想玩它, 看看它是如何与你一起工作的｡
但是, 最重要的是您要测试SQL注入是否存在,
您可以使用我们在上一个视频中展示的方法来使用它｡
因此, 尝试单引号, 尝试and语句,
尝试true and语句, 因此1 = 1,
然后是false and语句, 因此1
= 0, 或2 = 0, 如果它们按预期工作, 则您的目标具有SQL注入, 您可以开始使用它｡