SQL注入(三)

宽字节注入

mysql_query("SET NAMES ‘gbk‘");//设置字符集编码,对数据库执行之后的结果进行某种编码(gbk)然后传递给用户,返回gdk编码的结果

mysql_set_charset("GBK");//设置字符集编码,规定当与数据库服务器进行数据传送时要使用的默认字符集

mysql_real_escape_string()对参数进行过滤转移,其类似功能的函数

GBK编码,针对汉字的一种编码方式,使用两个字节编码一个汉字

漏洞形成原理:对数据库执行之后的结果进行gbk编码+执行过滤函数对用户提交的数据进行过滤=宽字节

测试步骤:

step1:访问站点../gbksql/01/?id=1‘查看返回结果:select* from news where tid=‘1\",执行结果不受影响

step2:../?id=1%df(为啥使用df?高位在81以后就能用,81~fe)1%df--->1%df-->

step3:测试sql注入的位置

PDO宽字节注入:

pdo:连接数据库-》设置模板

$id=addslashes($id);

$conn=new PDO("mysql:host=localhost;dbname=dvwa;chartset=utf-8;port=3306","root","root") or die("error");

$conn->exec("set names ‘GBK‘");

$result_sql=$conn->prepare("select * from users where user_id=?");

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

二次编码注入:浏览器会对from提交的数据处理之后进行urldecode

1%25%27

进入后端php第一次解析为1%27

处理数据

之后因为程序编写的问题又进行了urldecode

变成1‘

原文地址:https://www.cnblogs.com/yyhfirstblog/p/11768211.html

时间: 2024-10-26 01:45:33

SQL注入(三)的相关文章

SQL注入(三)

邮给我一个密码 我们意识到虽然不能添加一条新的记录在members表中,但我们可以通过修改一个存在的记录, 这也获得了我们的证明是可行的. 从先前的步骤中,我们知道[email protected]在系统中有一个帐号,我们使用SQL注入更新了他的数据库记录为我们的邮件地址: SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; UPDATE members SET email = '[email pro

WEB 安全之 SQL注入 < 三 > 提权

前两篇文章介绍了攻击者通过构造SQL语句来获得“非授权信息”,都是停留在数据库层面的,其实它的威力可不仅仅止于此吆.如果DB管理员有疏忽,再加上页面有注入漏洞,危害不仅仅像前两篇最终网站后台沦陷搞不好整个系统都有可能被人控制. 测试环境跟上一篇相同, MSQL + asp.net  + win7.前面已经拿下了管理员用户名.密码,我们还是使用新闻详细页面 ( 方便测试,不设防 ): public partial class NewsInfo : System.Web.UI.Page { prot

记录一下学习PDO技术防范SQL注入的方法

最近学习了使用PDO技术防范SQL注入的方法,在博客里当做一次笔记.若果有新的感悟在来添上一笔,毕竟也是刚开始学习.一. 什么是PDO PDO全名PHP Data Object PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口. PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据. 二.如何去使用PDO防范SQL注入?/防范sql注入这里使用quate()方法过滤特殊字符和通过预处理的一些方式以及bindPar

防止sql注入的三种方法

常用的避免SQL注入的三种方法 一,存储过程 在学习数据库视频的时候接触过,它是存储在数据库中的一些事先编译好的指令.在用的时候不用重新编写,直接调用就好了.所以,使用它可以大大提高程序的执行效率. 那么,如果创建一个存储程序并使用它呢?这是我们今天要解决的问题 1.创建过程 可编程性--下拉菜单--存储过程--右键--查询菜单--指定模板参数的值--新建查询--输入语句--查询菜单中的分析检查语法是否正确--执行 2.具体创建语法 在创建存储程序时,为了应对各种变换的数据,通常会涉及到带参数的

web实验三——pikachu之sql注入

(一)数字型注入 首先更改1项的值构造payload找到注入点,之后构造payload注出其他信息 查表名 查字段名 最终输入payload: value="1 union select concat(id,'|',username,'|',password,'|',level),2 from users" 结果 (二)字符型注入 使用单引号跳出字符串,最后使用#注释掉多余sql语句,跳过前面查表名字段名的步骤,直接给出最后payload: ' union select id,conc

DVWA(三):SQL injection 全等级SQL注入

(本文不定期更新) 一.所需环境: 1.DVWA 2.web环境 phpstudy/wamp 3.burp suite 二.SQL注入产生的原因: 程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患 用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据或进行数据库操作. 三.关于SQL注入需要注意的几个点: 1.SQL注入的攻击流程: (1)判断注入点:一般分为三大类 GET.POST参数触发SQL注入,Cookie触发注入 (2)判断注入类

php连接mysql的三种方式和预处理下的sql注入

0x00 前言 学习了一下堆叠注入和这三种连接方式预处理下的SQL注入问题. 0x01 基础知识 参考: https://www.cnblogs.com/joshua317/articles/5989781.html https://www.cnblogs.com/geaozhang/p/9891338.html 1.即时 SQL 一条 SQL 在 DB 接收到最终执行完毕返回,大致的过程如下: 1. 词法和语义解析: 2. 优化 SQL 语句,制定执行计划: 3. 执行并返回结果: 如上,一条

Ado.net 三[SQL注入,DataAdapter,sqlParameter,DataSet]

1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为xiexun,该sql的正确语句应该为: select * from Users where userName='xiexun' 如果在没有做任何处理的情况下,在登录名文本框中输入(xuxian' delete users--),单击"登录"按钮之后,相当于传了两句sql语句,一句执行查询

三、ADO.Net基础【05】SQL注入漏洞(SQLInjection)

使用字符串拼接的方式把sql语句所需参数拼接到将要执行的sql语句中(参数一般只sql语句的过滤条件),对于用户的恶意输入可能导致不一的查询结果 例如:一个登录的例子(UserName和Password是用户的输入的用户名和密码). "select count(*)  from T_Users where UserName=' "+UserName+" ' and Password= ' "+Password+" ' "; C#这段代码指C#将要