zoukankan      html  css  js  c++  java
  • SQL注入学习总结(二):其他类型SQL注入

    其他类型注入的详解(1)

    1.二次注入

    形成原理:在第一次进入数据库插入数据的时候,仅仅只是使用了addslashes或者是借助get_magic_quotes_gpc对其中的特殊字符进行转义,但是addslashes有一个特点就是虽然在参数前会添加''进行转义,但是''并不会进入数据库中,再写入数据库时还是保留了原来输入的数据.在下一次需要查询时就直接从数据库中取出了能够构成payload的语句.比如在第一次注入时写入了单引号,就可以形成二次注入

    Tips:一般题目中都会存在登陆注册两种功能(当然也不排除session文件包含)

    例子:(sqli-labs less-24)

    1. 首先进入搭建好的sqli-labs less-24
    2. 注册一个新的账号admin'#

    1.png

    1. 查看此时数据库中已经多出一个账号了并且特殊符号没有被转义

    2.png

    1. 我们尝试着登陆进去,会发现可以更改当前用户的密码

    3.png

    1. 到数据库查看可以发现admin的密码被修改了,而admin'#的密码没有

    4.png

    1. 我们可以查看pass_change.php的代码,发现修改密码这里的sql语句
      "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
      5.png

    我们可以看到如果将admin'#带到里面去后:
    "UPDATE users SET PASSWORD='$pass' where username='admin'# and password='$curr_pass' ";
    实际上就是:
    "UPDATE users SET PASSWORD='$pass' where username='admin'
    这里后面的内容都被#注释掉了,这样就是在修改admin的密码了,我们再尝试登陆一下,发现利用admin也可以成功了

    6.png

  • 相关阅读:
    数据库表的主外键
    数据库条件查询及关系搭建
    MySQL数据库的基本认识与操作
    MySQL5.7安装详解及常见安装问题解决
    数据库介绍
    Sensor图像调试
    1.线性表
    发展建议
    typedef 与 #define 的区别
    音频处理
  • 原文地址:https://www.cnblogs.com/vincy99/p/9629140.html
Copyright © 2011-2022 走看看