php中sql格式化字符串,sqli注入-sprintf格式化字符串带来的注入隐患

PHP中 sprintf()格式化输出详解

sprintf()函数把格式化的字符串写入变量中。

arg1、arg2、++参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个%符号处,插入arg1,在第二个%符号处,插入arg2,以此类推。

注释:如果%符号多于arg参数,则您必须使用占位符。占位符位于%符号之后,由数字和“\$”组成。

$number = 2;

$str = "Shanghai";

$txt = sprintf("There are %u million cars in %s.",$number,$str);

echo $txt;

?>

运行结果为:There are 2 million cars in Shanghai.

1.使用格式值%f:

$number = 123;

$txt = sprintf("%f",$number);

echo $txt;

?>

运行结果为:123.000000

2.使用占用符:

$number = 123;

$txt = sprintf("带两位小数:%\$.2f

不带小数:%1\$u",$number);

echo $txt;

?>

运行结果为:带有两位小数:123.00

不带小数:123

在php的格式化字符串中,%后的一个字符(除了'%')会被当作字符类型,而被吃掉,单引号',斜杠\也不例外。

如果能提前将%' and 1=1#拼接入sql语句,若存在SQLi过滤,单引号会被转义成\'

select * from user where username = '%\' and 1=1#';

然后这句sql语句如果继续进入格式化字符串,\会被%吃掉,'成功逃逸

sql = "select * from user where username = '%\' and 1=1#";

$args = "admin";

echo sprintf($sql,$args);

result: select * from user where username = ' ' and 1=1#' and password = 'admin';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis依赖_这大概就是公司一直用Mybatis的原因!真的太强了

01 什么是MyBatis、Spring?MyBatis是什么?它是一个SQL Mapping框架,它是一个持久化技术框架。再说得简单一点,它只不过是一个操作数据库的框架。Spring是什么?Spring就是一个大容器,不管是IoC还是AOP&#…

php excelreader 中文,如何解决php excel reader导出excel中文乱码?

解决php excel reader导出excel中文乱码的方法:1、如果不使用dump函数,可以通过修改【_defaultEncoding】变量解决问题;2、如果使用dump函数导出excel,需要修改htmlentities函数解决。解决php excel reader导出excel中文乱码的方法…

python画同心圆程序_Python Turtle:使用circle()方法绘制同心圆

I am not at this point interested in an efficient way of producing concentric circles: I want to see what I have to do to get this way to work 为了解决OP的问题,对其原始代码进行更改以使其正常工作是很简单的:turtle_pos(trl, [trl.xcor() …

绕过宝塔禁止的php函数,宝塔disable functions函数全被禁命令执行+加域服务器如何无限制执行命令...

本地搭建实验环境时遇到了不少小问题实验环境2008 R2宝塔搭建的IIS discuz3.2X手动上传shell冰蝎连接(ps:有表哥使用冰蝎的时候提示文件存在但是无法获取密钥,解决办法,使用最新版本的冰蝎即可,具体详情看更新日志)连接上shell发现无法执行命…

anaconda和python区别_初学 Python 者自学 Anaconda 的正确姿势是什么?

事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境。 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码、图像和文档全部组合到一个web文档中。 接下来我详细介绍下Anaconda,并在最后给出Jupyter …

oracle rman备份整库,RMAN备份恢复整个库

RMAN备份恢复整个库1 查看历史备份集$ rman target /RMAN> list backup;说明与资料档案库中的任何备份都不匹配上述结果说明之前没有备份过2 备份整个库RMAN> backup database;启动 backup 于 21-3月 -15使用通道 ORA_DISK_1通道 ORA_DISK_1: 正在启动全部数据文件备份集…

oracle 24756,关于ORA-24756: transaction does not exist的问题

最近在检查一个数据库时,发现跟踪日志有大量的错误( ORA-24756: transaction does not exist)1、主机系统环境IBM P740#oslevel -s6100-06-05-11152、数据库版本11.2.0.3 RAC ASM两节点3、在数据库跟踪日志中出现大量错误。(alert文件太大无法上传,几乎…

python 函数 全局变量_python3函数内全局变量使用global

原博文 2017-08-16 23:08 −def p_num(): global num num 10 print (num) num 5 p_num() print(num) ... 相关推荐 2019-12-11 15:55 − 如果需要在函数内部改变函数外部的变量,就可以通过在函数内部声明变量为global变量。这样当程序运行至global变量便会替换外部…

java 切面_Java笔试面试精心整理得到89道Spring 核心知识【收藏向】

点击上方"蓝字",关注了解更多Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot,也是基于 Spring 实现的,SpringBoot 的…

安装oracle 10g闪退,Windows 7安装Oracle 10g常见错误及解决方法

Windows 7安装Oracle 10g常见错误及解决方法在安装之前&#xff0c;我们要先下载相应的版本。点击&#xff1a;Oracle 10g支持Win7版错误A&#xff1a;正在检查操作系统要求...要求的结果: 5.0,5.1,5.2,6.0 之一实际结果: 6.1检查完成。此次检查的总体结果为: 失败 <<<…

python爬取百度文库_利用Python语言轻松爬取数据

利用 Python 语言轻松爬取数据 对于小白来说&#xff0c;爬虫可能是一件非常复杂、 技术门槛很高的事情。 比如有人认为学爬虫必须精通 Python &#xff0c;然后哼哧哼哧系统学习 Python 的每个知识点&#xff0c;很久之后发现仍然爬不了数据&#xff1b;有的人则认为先要掌握 …

切比雪夫不等式例题讲解_排序不等式,切比雪夫不等式及伯努利不等式

我们比较熟悉的不等式可能就是下面的这个不等式链以及柯西不等式了&#xff1a;对于不等式链的证明我们可以看下面这张图&#xff0c;非常直观形象&#xff1a;不太懂得也可以看这个视频讲解&#xff1a;知乎视频​www.zhihu.com对于柯西不等式的证明及讲解&#xff0c;我们之前…

任务计划命令 linux,linux执行一次性任务计划at命令

at跟crontab一样&#xff0c;都是执行定时计划任务的命令。但不同的是&#xff0c;crontab执行的循环的任务&#xff0c;而at执行的是一次性任务&#xff0c;任务执行完以后便失效。设置任务&#xff1a;at now 1 week -f a.sh #a.sh必须已存在at 01:35 < my-at-jobs.…

linux逻辑文件块,linux逻辑卷组创建以及修改

创建逻辑卷组&#xff1a;一、将扩展的硬盘分区新加一块SCSI硬盘&#xff0c;需要将其分成三个区&#xff1a;代码:#fdisk /dev/sdb进入fdisk模式&#xff1a;Command (m for help):p //查看新硬盘的分区Command (m for help):n //创建新分区可以用m命令来看fdisk命令的内部命…

经济学原理 下载 曼昆_2021南开经济学考研全年规划

先介绍一下本文的作者&#xff0c;本人本科来自于某双非财经类院校&#xff0c;于2019年考入南开大学某应用经济学专业&#xff0c;在2019年考研初始专业课826经济学基础&#xff08;也就是20年的823&#xff09;中拿到了138分的成绩&#xff0c;自认为对专业课的复习有一定心得…

linux系统进程控制实验报告,Linux进程控制实验报告.doc

里奴性进程控制实验报告实验名称: Linux进程控制实验要求:一.编写一个Linux系统C程序&#xff0c;由父亲创建2个子进程&#xff0c;再由子进程各自从控制台接收一串字符串&#xff0c;保存在各自的全局字符串变量中&#xff0c;然后正常结束。父进程调用waitpid等待子进程结束&…

excel中如何对矩阵得对角线进行求和_如何利用图卷积网络进行图形深度学习(第2部分)...

图上的机器学习是一项艰巨的任务&#xff0c;由于高度复杂但信息量丰富&#xff0c;本文是关于如何利用图卷积网络(GCN)进行深度学习的系列文章中的第二篇。我将简要回顾一下上一篇文章&#xff1a;图形卷积网络的高级介绍具有谱图卷积的半监督学习(本文)简要回顾一下在上一篇关…

linux内存不足+段错误,在linux下代码运行出现段错误,求大神

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#include#include #include#include#define PATH1 "/proc/meminfo"#define PATH2 "/proc/cpuinfo"#define PATH3 "/proc/version"#define PATH4 "/proc/bus/usb/devices"struct M…

linux 开放5222端口,ejabberd 安装配置

ejabberdejabberd是基于Jabber/XMPP协议的即时通讯服务器&#xff0c;由GPLv2授权(免费和开放源码)&#xff0c;采用Erlang/OTP开发。它的特点是&#xff0c;跨平台&#xff0c;容错&#xff0c;集群和模块化。ejabberd安装&#xff1a;1. 下载安装包&#xff1a;2.给权限&…

docker查找镜像_5 款非常好用的开源 Docker 工具,get一波~

本文同步Java知音社区&#xff0c;专注于Java作者&#xff1a;Shekhar Gulatihttp://dzone.com/articles/5-docker-utilities-you-should-know导读Docker 社区已经创建了许多开源工具&#xff0c;它们能帮我们处理各种用例。作者在本文中推荐了 5 款认为最有用的 Docker 工具&a…