zoukankan      html  css  js  c++  java
  • 数据库手工注入中的闭合

    数据库手工注入中的闭合

    1、什么是闭合?

    闭合:这个语句可以完整正确的执行
    后台服务器PHP代码:

    $sql = "SELECT * FROM users WHERE id = $id LIMIT 0,1";
    $sql = "SELECT * FROM users WHERE id = '$id' LIMIT 0,1";
    $sql = "SELECT * FROM users WHERE id = ('$id') LIMIT 0,1";

    $id两侧必须要闭合,代码才可以正确执行
    数据库代码:

    select * from users where id = $id limit 0,1;
    select * from users where id = '$id' limit 0,1;
    select * from users where id = ('$id') limit 0,1;

    2、为什么闭合这么重要

    sql注入,我们要注入到自己的sql语句,
    如果注入后,破坏了原有的闭合,那么注入也会失败,所以闭合很重要,决定了最后是否可以注入成功。
    举例:

    $sql = "SELECT * FROM users WHERE id = '$id' LIMIT 0,1";
    
    $id = 1' 0r 1=1 --+ --+ 注释'后面的数据
    $sql = "SELECT * FROM users WHERE id = '1' or 1=1 --+' LIMIT 0,1";

    解释

    在选择注入点的时候,我们通常会选择类似与这样的URL:http://127.0.0.1/index.html?id=1。。。 对于这样的语句我们不难发现?后面的id是需要查询数据库的。那么 我们判断这里有可能是一个SQL的注入点,然后我们就需要针对这条URL来进行注入点的判断了。

    在进行注入点的判断的第一步,我们需要对?后面的id=1来进行分析。。。首先,我们需要知道 在后端代码程序当中,id=1--->id="id"1id"。。。这里的1是一个变量,由我们的id来决定的,当我们注入的时候,也就是改变$id的值,,这个值最终是需要流回到后端的代码当中,这里就需我们来探测$id的闭合了。。。

    如果$id是一个常量,我们要知道,在编程代码的是时候,常量$id是不需要加'' 或者是()的,这样我们就会很开心,这里不需要闭合,直接输入一个参数就可以了。。。

    但是如果这个$id被()或者('')包含,当我们改变$id的值的时候,就会发现有报错的现象,这是因为我们的$id值没有形成闭合,代码无法正常执行。所以就需要我们在后面加')或者是其他的值来使这条语句闭合。。

    后面的--+ 的意思则是:在sql当中 -- 是一种注释的功能,我们将写入-- 是用来把$id后面的’或者)给注释掉的,防止影响前面的闭合。。。

    常见的闭合方式

    '$id'
    "$id"
    ('$id' )
    ("$id")
    (('id'))

    共同学习,共同进步!!!

    安徽奥斯科信息科技有限公司
    电 话:0551-63839550
    地 址:安徽省合肥市高新区天智路14号时代智谷创业园101室
    本文版权归作者和博客园共有,不以任何盈利为目的,旨在大家共同学习,共同进步!!!但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律声明责任的权利。
  • 相关阅读:
    [oracle] linux Oracle 安装配置
    [dns] linux dns 安装配置
    [apache] linux Apache 编译安装
    [yum] linux yum 配置本地和ftp源
    [ftp] linux ftp 安装配置
    [ssh 无密码访问]linux ssh公匙密匙无密码访问
    [php ] linux php 搭建
    [mysql ] linux mysal 修改字符集
    [ mysql ] linux mysql 忘记root密码重置
    国安是冠军
  • 原文地址:https://www.cnblogs.com/Auscoo/p/13690984.html
Copyright © 2011-2022 走看看