教师：现在, 要尝试发现SQL注入,
您需要浏览目标并尝试断开每一页｡
因此, 每当您在此表单上看到文本框或参数时,
例如, 第页｡ php那么somethings等于something,
试着在这里注入东西｡
所以试着用一个单引号, 试着用一个and,
或者order by语句, 来打破页面, 让它看起来不同｡
我给你们看一个例子｡
我会先进入登录页面, 就在这里｡
它要求我现在登录｡
但我实际上是用自己的名字注册的｡
所以你可以直接进去登记｡
我有个用户名叫扎伊德密码是一二三四五六｡
所以首先, 让我们...
我会登录给你看的｡
我的用户名是扎伊德,
密码是一二三四五六｡
现在我以扎伊德的身份登录,
我的签名是aa｡
它只是真的没什么, 只是像作为一个测试｡
我要注销, 我们回到登录页面｡
在这里, 我们有一个页面,
你可以尝试注入｡
但我们稍后会讲到这个｡
目前, 我们有一个注入文本框的例子｡
所以你可以试着注入名字和密码｡
所以我会把我的名字作为扎伊德,
我会把一个单引号｡
所以我把这个符号加到密码里｡
看看能不能破解它｡
正如您现在所看到的,
我们看到了一个错误｡
它看起来不像是一个正常的错误,
它看起来像是一个数据库错误｡
通常, 如果你遇到这样的错误,
你会很幸运｡
现在通常错误不会像这样提供信息｡
有时候, 您会发现页面并没有按照预期的方式运行｡
有时它只是一个看起来不像它应该的页面｡
例如, 如果它是一个新闻页面,
可能会有文章丢失, 或者如果它是一个博客,
它会有一个帖子丢失或不同种类的帖子｡
所以你需要密切关注变化｡
在这个例子中, 我们实际上得到了一个非常好的错误｡
它告诉我们它有哪个文件,
并告诉我们语句中有错误｡
和我们添加的引号附近的错误｡
它还告诉我们正在执行的语句｡
这对学习真的很有好处｡
因为现在我们可以看到语句是什么,
系统正在尝试运行｡
系统尝试执行选择 *｡
所以它试图从账户中选择所有内容,
其中用户名等于Zaid,
密码等于一个单引号｡
请注意, 系统Web应用程序已经在名称周围添加了引号｡
所以当我说扎伊德时, 它在两个引号之间加上了扎伊德｡
它在另外两个引号之间加上了我加的单引号｡
这就是为什么我们在这里引用了三句话｡
因此, 我们可以看到,
目标网站的70%都有SQL注入｡
我们仍然不确定它是否能执行我们想让它做的事情｡
那么我真的可以注入代码并让它被执行吗？
让我们看看我们能不能做到｡
所以用户名还是扎伊德｡
我要用密码做什么,
我会把我的密码｡
所以我要写上一二三四五六然后我就关门了｡
我来告诉你们为什么要关闭它,
因为系统中的当前语句是select *
from, to, Zaid, is equal to｡
它会自己打开一个单引号｡
所以我们称之为S密码｡
所以我们把它当作变量｡
它会吸收我放进去的任何东西, 也会吸收我放进这个盒子里的任何东西｡
它将插入它而不是S密码, 这是一个变量｡
所以我只是给你们一个想法,
你们需要能够想象这种情况的发生｡
所以它接受我在里面放的任何东西, 它会把它放在两个单引号之间｡
它将被插入到那里, 并在系统上执行｡
我现在要做的是,
我会把一, 二, 三, 四, 五,
六加上我自己的引号｡
我现在要做的是, 代码是这样的.
所以它会选择这个, 密码等于那个｡
我现在有两个报价, 好吧｡
然后我要做的是,
我会说,
一等于一｡
所以一等于一｡
我只是想看看它是否会执行我想让它做的事情｡
我现在的声明是, 从帐户中选择
*, 其中用户名等于Zaid, 密码等于一二三四五六｡
注意, 我自己要插入这个,
1等于1｡
系统会抱怨的一个问题是, 我们在这里有一个额外的引用,
因为我会自己在文本框中插入这个｡
所以它会抱怨这个,
它会说这是一个开放的代码,
从来没有被关闭过.
我现在要做的就是添加注释｡
而且当你添加一个注释时,
基本上在注释之后出现的所有内容都不会被执行｡
我会用散列作为注释｡
所以系统会忽略散列之后的任何内容｡
所以我现在要注入的是这个,
1等于1和这个, 就像我说的, 通常你在这里有什么, 你已经削减了你的密码,
或者取决于程序叫它什么, 只是想象一下｡
我会把这个插进去｡
当你这样做的时候, 你把它插入里面, 这就是代码的样子｡
看起来就像是正确的用户名和密码,
一等于一, 这是真的｡
然后它就不会,
它会忽略这里的引用｡
如果我们贴上这个,
就可以登录了｡
它应该允许我登录｡
完美的是, 我们能够登录和用户名是扎伊德｡
到目前为止, 我们什么都没做｡
但这表明它在运行我们的代码吗？
我们换个方法吧｡
现在, 让我们试着加上一个虚假的陈述｡
所以我们做了我们做了一个等于一个,
这是正确的, 它执行时, 我们想要的｡
让我们试试一等于二｡
而这是错误的｡
所以我有正确的密码｡
我有正确的用户名,
一等于二｡
这应该是错的, 因为它是假的,
一不等于二, 我用的是,
所以一切都必须是真的｡
因此, 即使我输入了正确的用户名和密码,
它也会显示错误｡
所以我把一, 二, 三, 四,
五, 六, 一等于二｡
所以这就像, 哦, 这是错误的｡
正如您所看到的, 它给了我一个身份验证错误,
错误的用户名或密码,
即使我得到了正确的密码和正确的用户名｡
所以这证实了这个网站实际上是在密码中注入了我们想要的任何东西｡
因此我们可以使用密码字段来注入SQL代码｡
这张表上永远都有｡
我们要输入一个密码,
你要在这里输入你的代码, 所以我在这里输入大写代码.
因为我们要输入密码, 右引号,
然后将要在系统上执行的代码放在这里,
它将在目标系统上执行｡