sprintf()

定义和用法

format参数

可能的格式值:

%% - 返回一个百分号 %

%b - 二进制数

%c - ASCII 值对应的字符

%d - 包含正负号的十进制数(负数、0、正数)

%e - 使用小写的科学计数法(例如 1.2e+2)

%E - 使用大写的科学计数法(例如 1.2E+2)

%u - 不包含正负号的十进制数(大于等于 0)

%f - 浮点数(本地设置)

%F - 浮点数(非本地设置)

%g - 较短的 %e 和 %f

%G - 较短的 %E 和 %f

%o - 八进制数

%s - 字符串

%x - 十六进制数(小写字母)

%X - 十六进制数(大写字母)

附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

+ (在数字前面加上 + 或 - 来定义数字的正负性。默认情况下,只有负数才做标记,正数不做标记)

' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。例如:%'x20s(使用 "x" 作为填充))

- (左调整变量值)

[0-9] (规定变量值的最小宽度)

.[0-9] (规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必须按照以上顺序使用。

bug(特定情况)

$pass=sprintf("and pass='%s'",addslashes("%1$' or 1=1 -- "));
$sql=sprintf("select * from user where name='%s' $pass",addslashes("root"));
// 输出:select * from user where name='root' and pass='' or 1=1 -- '

%1$' or 1=1 -- 用addslashes加上反斜杠之后%1$\' or 1=1 --

%1$\就是不正常的形式在第二行代码中被替换成空留下' or 1=1 --

%1$' or 1=1 -- 最好用URL编码一下


%251%24%27+or+1%3D1+--+


原因

  当format参数字符串中无法形成正常的%占位符时,返回值中不是正常形式%占位符将会替换成空

  形成不正常的占位符有很多种情况不按照format参数的可能格式和附加格式使用基本都是不正常的形式

  注入过程中根据情况进行构造

PHP sprintf函数 bug的更多相关文章

  1. php sprintf 函数的用法

    sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处.该函数是逐步执行的.在第一个 % 符号处,插入 arg1,在第二个 % 符 ...

  2. sprintf()函数的用法

    Visual C++ sprintf()函数用法 转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,spr ...

  3. sprintf函数

    sprintf函数用法举例 #include<stdio.h> int main() { //1.连接字符串 char a1[] = {'A', 'B', 'C', 'D', 'E', ' ...

  4. arduino上使用sprintf()函数输出float值出错

    如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn't work.弄了很久,还以为是没学c++的原因.其实在arduino上,这个函 ...

  5. sprintf函数php的详细使用方法

    PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...

  6. [转]PHP echo, print, printf, sprintf函数的区别和使用

    1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ...

  7. 转:Visual C++ sprintf()函数用法

    将字串格式化命令.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情 ...

  8. C++中对sprintf()函数的说明(转)

    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...

  9. PHP echo, print, printf, sprintf函数的区别和使用

    1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ...

  10. C语言中sprintf()函数的用法

    sprintf函数的用法 1.该函数包含在stdio.h的头文件中. 2.sprintf和平时我们常用的printf函数的功能很相似.sprintf函数打印到字符串中,而printf函数打印输出到屏幕 ...

随机推荐

  1. Apinto Dashboad V2.0 发布:可视化控制台让配置更轻松!

    大家好, Eolink 旗下开源网关 Apinto 本次带来了 Apinto Dashboad V2.0 的版本发布. Dashboad 需要与 Apinto 主版本一起使用,目前 Dashboad ...

  2. Java程序死锁问题定位与解决

    更多内容,前往 IT-BLOG 一.概述 死锁是指两个或两个以上的进程在执行过程中,因争抢资源而造成的一种互相等待的现象,若无外力干涉它们将无法推进,如果系统资源充足,进程的资源请求能够得到满足,死锁 ...

  3. Solon v2.2.6 发布,助力信创国产化

    Solon 是一个高效的 Java 应用开发框架:更快.更小.更简单.它是一个有自己接口标准规范的开放生态,可为应用软件国产化提供支持,助力信创建设. 150来个生态插件,覆盖各种不同的应用开发场景: ...

  4. 9.SSRF和XML

    SSRF和XML 目录 SSRF和XML SSRF介绍 SSRF漏洞挖掘 SSRF漏洞利用 内网探测: 常见端口探测: 协议探测: file协议敏感文件: XML介绍 DTD定义 DTD作用 XXE介 ...

  5. JS中关于原型对象与原型链的理解!

    1.首先我们先来看一张图 prototype 每个函数都有一个 prototype 属性每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每 ...

  6. 前端根据后端返回的数据流导出excel

    首先在utils.js里面声明exportMethod函数,该函数的作用是通过发axios post请求后端导出接口,请求成功后: 1. 在成功函数里面先新建一个a标签: const link = d ...

  7. springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)

    来了就点个赞再走呗,即将毕业的兄弟有福了文章底部获取源码springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)技术框架:java+springboot+vue+mysql后端 ...

  8. python工程师-day83

    1.drf 的用户认证组件 (1)models from django.db import models# Create your models here.class User(models.Mode ...

  9. 第3章. markdown语法

    常用语法 1. 文字格式 1.1 给文字添加引用 在文字的两侧,使用 ` 符号包裹起来 怒发冲冠,凭栏处,潇潇雨歇. 1.2 设置文字样式为斜体 在文字的两侧,使用 * 符号包裹起来 抬望眼,仰天长啸 ...

  10. 学习MASA第一天:MASA Blazor TEST项目创建

    个人博客地址: https://note.raokun.top 拥抱ChatGPT,国内访问网站:https://www.playchat.top 学习MASA第一天:MASA Blazor TEST ...