sprintf

https://www.php.net/manual/zh/function.sprintf.php

漏洞demo:

<?php
$name = addslashes($_GET['a']);
$sql = "select * from '{$name}' where %d";
echo $sql . '<br>';
echo sprintf($sql,1);

意思也就是说当String $format 内容可控的时候,我们可以利用执行sprintf函数的时候来干掉\,造成单引号逃逸。

url:?a=123456%1$%27

json_decode

<?php
echo json_encode(['a'=>"123"]) . '<br>'; //用于数组json编码后的模板 $name = addslashes($_GET['a']);
echo $name . '<br>';
$post_data = json_decode(str_replace('\\','',$name),1); var_dump($post_data);

利用json_decode函数在将字符串解码成数组的时候,会去掉其中转义字符。

以上两个函数相对而言较为生僻,防范的不是那么严谨,但是都是存在实例的。

实例参考链接:

https://xz.aliyun.com/t/1865

https://forum.90sec.com/t/topic/366

https://paper.seebug.org/386/

php中两个函数可能导致的sql注入的更多相关文章

  1. mybatis中#{}与${}的差别(如何防止sql注入)

    默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义. # ...

  2. mybatis中的#和$的区别 以及 防止sql注入

    声明:这是转载的. mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...

  3. php is_numeric函数可绕过产生SQL注入

    老老实实mysql_real_escape_string()防作死......is_numeric的SQL利用条件虽然有点苛刻,但还是少用的好= = 某CTF中亦有实测案例,请戳 http://dro ...

  4. Servlet课程0425(七) 到数据库中去验证用户,同时防止SQL注入漏洞

    Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...

  5. PHP中使用PDO的预处理功能避免SQL注入

    不使用预处理功能 <?php $id = $_GET['id']; $dsn = 'mysql:host=localhost;port=3306;dbname=database'; try { ...

  6. ylb:SQL Server中的时间函数

    ylbtech-SQL Server:SQL Server-SQL Server中的时间函数 SQL Server中的时间函数. 1,SQL Server中的时间函数 返回顶部 1.   当前系统日期 ...

  7. 代码审计中的SQL注入

    0x00 背景 SQL注入是一种常见Web漏洞,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.本文以代码审计的形式研 ...

  8. 一次SQL注入导致的"越权"

    原文来自SecIN社区-作者:tkswifty 相关背景   在实际的业务开发中,SQL交互往往是业务系统中不可或缺的一项.在Java中提供了类似Mybatis.Hibernate.SpringDat ...

  9. python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数

    python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...

随机推荐

  1. JTable写入数据库内容

    /*JTable中导入数据库数据. 创建2个Vector col和dat col存入字段名 dat存入数据内容. dbname=new JTable(dat,col); */package demo; ...

  2. springmvc 处理content-Type不是application/x-www-form-urlencoded编码的内容

    @RequestBody 该注解常用来处理Content-Type不是application/json, application/xml等操作: 它是通过使用HandlerAdapter 配置的Htt ...

  3. 一文搞懂Java引用拷贝、深拷贝、浅拷贝

    刷题.面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝.拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的! 在对象的拷贝中,很多初学者可能搞不清到底是拷贝 ...

  4. for _ in range( ):

    for _ in range( ): { //函数体 } 其中"-"只是一个占位符,可以把它理解为i或者j等等任意的字母. 上面代码相当于同下: for i in range( ) ...

  5. VRP OS Management

    From WizNote

  6. Dubbo+Zookeeper(二)Dubbo架构

    上次更新博客已经是一年前,这一年发生了很多事,并不顺利,甚至有些痛苦,不过不管怎样,不要停止学习,只有学习才能让你变强,应对更多不安定. 一.RPC概念 Dubbo服务是一个RPC框架,那我们首先就要 ...

  7. (数据科学学习手札103)Python+Dash快速web应用开发——页面布局篇

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  8. Centos7安装Jenkins和目录迁移

    Centos7安装Jenkins和目录迁移 内容: 安装Jenkins和相关的配置 尝试目录迁移,模拟磁盘空间不足 1. 安装Jenkins和配置 安装 根据Jenkins的官方安装指引,安装步骤如下 ...

  9. Desired_Capabilities配置

    appium服务器初始化参数 最全: https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps. ...

  10. 关于maven多module的依赖问题

    之前的项目因为历史的原因,都是一个project里只包含了一个module,今年进入了新的项目组,出现了多个module,最近刚好也是在学<maven实战>因此想要将这个东西记录下来 工程 ...