
前言
在学习本文之前,关于学习SQL注入的先决知识,您可以参考之前编写的必要的SQL注入基础知识.
了解SQL注入
从一开始,我们将从最简单的开始到less-1,开始我们的SQL注入学习之旅.
通过更改ID值#63; id = 3,页面上会显示不同的内容(用户名,密码).
然后我们可以猜测到,后台的SQL语句基于在前台传递给相应数据的id值.
然后编写SQL语句:
select username,password from table where id=input
确定SQL语句的存在

下一步要进行测试,请使用以下语句进行测试:
http://localhost/sqlilabs/Less-1/id=3 and 1=1 http://localhost/sqlilabs/Less-1/id=3 and 1=2
这时页面上没有更改,这与我们的预期结果不符,因为当id = 3和1 = 2时,SQL语句将成为select username,来自id = 3和1的表中的密码= 2该页面应该没有内容.
确保有一条SQL语句
使用上一条语句后,我们将使用以下语句:
http://localhost/sqlilabs/Less-1/id=3'
当UR1是以上SQL语句时,SQL执行错误消息将显示在页面上. 您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行附近使用“ 3” LIMIT 0,1'附近.
最严重的错误消息是:
``3''LIMIT 0,1'

当mysql出错时,最外面的引号会自动添加. 那么实际的SQL语句为“ 3” LIMIT 0,1. 我们发现输入的3'用引号引起来,然后我们猜出id = input不正确的表中的选择用户名和密码,而实际的后台SQL语句应为:
select username,password from table where id='input'
SQL注入验证
在确认存在SQL注入并且也知道SQL的背景编写之后,此时我们可以注入自己的SQL注入代码.
由于我们可以控制id的值,因此输入的最终SQL语句将变为:
select username,password from table where id='input 攻击代码'
在这一点上,我们可以构造以下有效载荷来验证我们的想法. 由于我们的输入由一对单引号引起来,因此我们输入的语句必须不受单引号的影响. 关闭单引号或注释掉单引号. (您可以参考上一篇文章)
#闭合单引号 id=1 and '1' = '1 # #注释单引号 id=1 and 1=1 # 或者 id=1 and 1=1--+
当我们使用以上三个有效负载时,页面上显示的结果是预期的. 然后我们还可以确定id参数确实是SQL注入. 在后台编写SQL语句的确是从表中的表中选择用户名和密码.

在确认SQL语句后,下一步是注入SQL注入代码.
执行SQL注入
使用SQL语句脱裤子非常关键. 如果您只知道有SQL注入但不能脱掉裤子,那么对于该站点而言,该漏洞实际上很小. 如何构造正确的SQL语句来解决问题也很重要. 在下一篇文章中,将详细解释SQL注入的详细步骤.
注射类型判断
此问题中的SQL语句称为字符SQL注入,因为在执行SQL语句期间,我们的输入包含在单引号中. 实际上,在执行SQL语句时,id参数被视为字符数据类型. 除了字符SQL注入外,当然还有数字SQL语句. 那么如何区分两者呢?
字符SQL注入
在确定存在SQL语句的部分中,当我们输入id = 3'时,页面上的错误消息为'3''LIMIT 0,1. 我们发现3'被引号引起来,然后表明这是一个字符SQL注入.
数字SQl注入
在less-2中,当我们还输入id = 3'时,页面上的错误消息是'LIMIT 0,1,则表示它是数字注入,并且还有一个limit关键字,然后我们猜测less-2中的SQL注入是:

select username,password from table where id=input limit 0,1
以上内容可以通过查看源代码进行验证.
SQL语句判断
但是在许多情况下,我们无法通过单引号返回SQL执行语句的错误信息,也无法通过错误信息获取注入类型. 因为很多时候常见sql注入语句,背景中的SQL语句将以各种方式编写.
less-3和less-4中的措辞如下:
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"
在less-3中使用括号包装用户输入
$id = '"' . $id . '"'; $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
在less-4中,双引号用于包装用户的输入,因此,即使您添加单引号进行测试,仍然无法启动SQL语句执行错误.
因此仅使用单个符号来判断通常是不够的,需要使用不同类型的符号来判断测试,包括包括'常见sql注入语句,“,\,(,=,&等)在内的字符,甚至有时您需要使用其他探测方法,因为您无法在后台判断SQL语句的编写,并且许多Web开发人员当前具有一定程度的安全意识,并且可能无法使用常规SQL探测语句. 互联网上有很多信息可以用来探测SQL注入语句.
摘要
没有一种千篇一律的SQL注入判断方法,只有连续实验. 当您有经验时,您将意识到注入的类型,并且对SQL注入的判断会更快. 以上是本文的全部内容. 如果您想在实际网络中的网站上进行安全测试,则上述知识还远远不够. 编辑器将继续更新更多SQL注入文章,请继续关注脚本主页.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-237048-1.html
你怎么像人呢
一国两制行不通了
为应对美国的军事威胁