首页 > 数据库 >iwebsec-sql注入 13 二次注入

iwebsec-sql注入 13 二次注入

时间:2023-08-19 10:55:56浏览次数:47  
标签:username 13 数据库 echo sql mysqli iwebsec 注入

01、题目分析

二次注入的原理是先把sql注入语句存放在数据库中,然后第二次通过调用数据库的数据(提前放置好的注入语句),然后进行sql注入

image

那么我们先将注册用户,将sql语句存放在数据库中,然后通过找回密码操作,数据库会自动调取数据库中的数据,就执行了我们的sql语句

02、手工注入

二次注入的前提是代码中使用了addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,这个我们在后面的代码分析中会进行分析,现在先默认存在。

我们现在假如想获取admin用户的密码

那么我们注册用户名填admin'#,密码填123,邮箱填admin

image

然后通过邮箱找回

image

image

02、代码分析

<?php

if(!empty($_POST['email'])){
    if($_POST['sub']){
        // 获取用户名、密码和电子邮件,并过滤特殊字符
        $username = addslashes($_POST['username']);
        $password = addslashes($_POST['password']);
        $email = addslashes($_POST['email']);	 
        
        // 构造插入数据库的 SQL 语句
        $sql = "INSERT INTO `users` (`username`, `password`, `email`) VALUES ('$username', '$password', '$email');";
        
        // 执行 SQL 语句
        $row = mysql_query($sql);
        
        if($row){
            echo "<script>alert('注册成功')</script>";
        }else{
            echo "<script>alert('注册失败')</script>";
        }
    }
}else{
    echo "<center>请注册输入信息</center>";
}
?>
<?php
if(isset($_POST['sub'])){
    $email = $_POST['email'];
    $email = addslashes($email);
    
    // 连接数据库(假设数据库连接已经在代码的其他地方进行)
    $conn = mysqli_connect("localhost", "username", "password", "database_name");
    if (!$conn) {
        die("数据库连接失败: " . mysqli_connect_error());
    }
  
    // 查询用户
    $sql = "SELECT * FROM users WHERE email='{$email}'";
    $result = mysqli_query($conn, $sql);
  
    if(mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        $username = $row['username'];
      
        $sql2 = "SELECT * FROM users WHERE username='{$username}'";
        $result2 = mysqli_query($conn, $sql2);
      
        if(mysqli_num_rows($result2) > 0) {
            $row2 = mysqli_fetch_assoc($result2);
            echo "<center><h4>您的用户名是 " . $row2['username'] . "</h4><br>";
            echo "<center><h4>您的密码是 " . $row2['password'] . "</h4><br>";
        } else {
            echo "<script>alert('邮箱不存在')</script>";
        }
    } else {
        echo "<script>alert('邮箱不存在')</script>";
    }
  
    // 关闭数据库连接
    mysqli_close($conn);
}
?>

标签:username,13,数据库,echo,sql,mysqli,iwebsec,注入
From: https://www.cnblogs.com/bdrwmy/p/17642173.html

相关文章

  • burpsuite靶场----SQL注入18----oracle的xml-bypass
    burpsuite靶场----SQL注入18----oracle的DNS-bypass靶场地址https://portswigger.net/web-security/sql-injection/lab-sql-injection-with-filter-bypass-via-xml-encoding正式开始1.随便点击一个viewdetails2.点击下面的checkstock,抓包3.发送到重放模块4.测试注入......
  • iwebsec-sql注入 12 等价函数替换过滤
    01、题目分析依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号02、手工注入依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号,比如like,rlike,regexp替换,id=1可以用idlike1以及id>0andid<2以及!(id<>1)进行绕过--查询行数?id=1order......
  • burpsuite靶场----SQL注入17----oracle之DNS外带
    burpsuite靶场----SQL注入17----oracle之DNS外带靶场地址https://portswigger.net/web-security/sql-injection/blind/lab-out-of-band-data-exfiltration正式开始payload模板:'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-......
  • iwebsec-sql注入 10 双重url编码绕过
    01、题目分析依旧是对关键词进行了过滤,除了双写大小写等过滤方法还可以采用双重url编码,在SQL注入攻击中,双层URL编码绕过机制是一种黑客利用URL编码的漏洞绕过安全检查的手法。原始的URL编码是将特殊字符转换成%后面跟着它的ASCII值的十六进制表示。例如,'被编码为%......
  • iwebsec-sql注入 11 十六进制编码绕过
    01、题目分析这里对单引号双引号啥的进行了过滤,可以采用16进制编码进行绕过02、手工注入这个和上次的双重url编码有异曲同工之妙,不过这个编码就简单了,直接十六进制编码即可,这里采用的编码软件是CaptfEncoder-win-x64-3.1.2.exe,16进制编码主要是在引号方面--查询行数?id=1or......
  • iwebsec-sql注入 08 大小写过滤注入
    01、题目分析大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可02、手工注入?id=-1UNIONSELECT1,2,3?id=-1UNIONSELECT1,2,DATABASE()?id=-1UNIONSELECT1,2,GROUP_CONCAT(TABLE_NAME)FROMINFORMATION_SCHEMA.TABLESWHERETABLE......
  • iwebsec-sql注入 09 双写关键字绕过
    01、题目分析大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可02、手工注入关键词绕过顾名思义,就是将一些sql注入中会用到的一些关键词进行过滤,本关是将select过滤了,那就双写写成seselectlect?id=1orderby3--id=-1就是不显示内容?id=......
  • iwebsec-sql注入 05 报错型注入
    01、题目分析:三大盲注中的报错型注入,02、sqlmap工具注入:一把梭python.\sqlmap.py-u"http://www.bdrwmy.cn:8001/sqli/05.php?id=1"--current-db--dump--batch03、手工注入:盲注,简单的来讲就是无论你输入什么内容,页面都不会出现错误提示,如果查询结果正确就显示类似......
  • Leetcode 1388. 3n 块披萨
    (本文只提供了解题思路的思考,原文作者题解连接)先把题目粘贴在这里给你一个披萨,它由3n块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨:你挑选任意一块披萨。Alice将会挑选你所选择的披萨逆时针方向的下一块披萨。Bob将会挑选你所选择的披萨顺时针方向......
  • 2023.08.13百度之星(大失败)
    大失败,哭;放个链接,有空来补:码蹄集(matiji.net)前面两题写的还挺顺手,然后开始写4和6,然后寄了,两个题加起来大概交了十发吧,算法没什么大问题,但是写挂了,都只能过一半的样例,悲;总结:沉淀,提升码力;1记录把每个参数都调成同一个值的代价和把每个参数调成一段连续的数的代价,比较相加最小......