返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >SQL注入之绕过is_numeric过滤
  • 111
分享到

SQL注入之绕过is_numeric过滤

数据库phpmysqlsql安全 2023-08-31 09:08:33 111人浏览 安东尼
摘要

目录 预备知识PHP常用的过滤类函数is_numeric()函数介绍 实验目的实验环境实验步骤一通过源代码审计,发现临时文件 实验步骤二通过分析源代码的执行逻辑,了解程序的功能,发现程

目录

预备知识

PHP常用的过滤类函数

(1)当php.ini配置文件开启了magic_quotes_runtime和magic_quotes_gpc时,PHP中的get_magic_quotes_gpc()和get_magic_quotes_runtime()函数就会自动的对指定范围内的数据进行转义。其中,magic_quotes_gpc主要作用于WEB客户端,简单的说主要是对$_GET、$_POST、$_COOKE中的数据进行过滤;magic_quotes_runtime主要是对文件中读取的数据或从数据库查询得到的数据进行过滤。
(2)Mysql_real_escape_string()、addslashes()可对数据中的单引号、双引号进行转义,能够有效地防止大多数sql注入攻击;mysql_real_escape_string()考虑了字符集,比addslashes()具有更高的安全性。当前的字符集是单字节的话,这两个函数作用相同,都可以起到转义过滤的作用,但是,随着UTF-8等字符集得到越来越广泛的使用,它们也逐渐不能满足要求了。
(3)此外,还用于过滤的还有字符串操作常用函数preg_match、strlen、strcmp、strtolower、bl2br(将换行符转换为html终止标记)、htmlentities、htmlspecialchars(将特殊字符转换wieldHTML等价形式,且不解析格式)等,还有isset、is_numeric、empty等表单验证函数。

is_numeric()函数介绍

本实验中的is_numeric()函数用于检测变量是否为数字或数字字符串。
如果将二进制或十六进制数据传递至is_numeric()函数,则也会返回为true,即被is_numeric()函数检测是数字。现在,我们进行测试。编写is_numeric.php文件,并将以下代码输入后,保存。

再执行该程序,可得到结果:bool(true)。

vim is_numeric.phpphp !$(!$代表上一条命令的最后一个参数,即is_numeric.php)

在这里插入图片描述

实验目的

了解PHP常用的过滤函数。
2.掌握SQLMAP通过tarmper实现注入攻击的利用方法。

实验环境

在这里插入图片描述
学生实验主机:Kali linux
实验目标服务器Centos 6.5 64bit,IP:10.1.1.8。
网络环境:实验室局域网。
Web服务器:Apache/2.2.15 (Unix)。
脚本语言:PHP。
数据库:MySQL 5.1.71。
相关工具:SQLMap、python

实验步骤一

通过源代码审计,发现临时文件

访问目标网站Http://10.1.1.8,如下图所示:
在这里插入图片描述
通过查看源代码,在最后一行发现注释中包含“index.phps”文件,于是再访问该文件:
http://10.1.1.8/index.phps,可查看到index.php的源代码:
在这里插入图片描述

实验步骤二

通过分析源代码的执行逻辑,了解程序的功能,发现程序中的安全漏洞

从源代码中可以分析出,服务器从POST获得id标签的值,首先利用is_numeric()函数判断id是否为数字或数字字符串,如果不是,则提示“hacking attemp(发现黑客尝试攻击行为)”,如下图所示。
在这里插入图片描述
接着,将id、vote、login写入数据库;再从数据库中取出id。从上可看出,id是被is_numeric过滤后,插入到vote表里的,然后又从vote表里取出,可以用十六进制或者二进制绕过is_numeric,形成SQL注入。
绕过is_numeric()的方法:将SQL注入的payload转换为十六进制表示。
例如,payload为2’ and 1=1,则先选中该payload,利用Firefox中的hackbar工具,选择Encoding→HEX Encoding→String to 00ff00ff,即可完成十六进制转换,转换结果为322720616e6420313D31;接着,为了让PHP知道该字符串是十六进制数据,还需要在前面加上0x,最终变成0x322720616e6420313d31。
在这里插入图片描述
选中payload。
在这里插入图片描述
十六进制转换。
在这里插入图片描述
加上0x。

实验步骤三

绕过过滤函数实现SQL注入

在本实验中,flag存在于mysql数据库的某个表中。尝试绕过is_numeric的限制实现SQL注入攻击,获取flag。
SQL执行语句为:

SELECT id FROM vote WHERE user = '{$login}' GROUP BY id

为此,我们使用UNION注入,可以构造攻击载荷payload为:

-1 UNioN ALL SELECT XXXX

利用Firefox的hackbar工具,可以将payload进行十六进制转码。如下图所示,我们将payload=“-1 union all select database()”进行转码(注意:在转码后,还须在十六进制字符串前加上0x)实现SQL注入,获取到了数据库的名称:task。
在这里插入图片描述
同理,我们可通过相同的方式,一步步查找所有表、获取表中的列名,最终获得flag。Payload为-1 union select flag from Flag。
在这里插入图片描述
既然知道了绕过限制的原理,我们可以自行编写tamper脚本,利用sqlmap实现自动SQL注入。
脚本如下:

#!/usr/bin/env Pythonimport binasciifrom lib.core.enums import PRIORITYfrom lib.core.settings import UNICODE_ENCODING__priority__ = PRIORITY.LOWESTdef dependencies():    passdef tamper(payload, **kwargs):    return ('0x' + binascii.hexlify(payload.encode(UNICODE_ENCODING))) if payload else payload

SQLMAP执行命令为:

sqlmap -u http://10.1.1.8/index.php --tamper  /usr/share/sqlmap/tamper/hexencode.py --data="id=1&vote=2&submit=Submit"  -p id

在这里插入图片描述
至此,已经获得flag,完成了我们本节课的实验。

来源地址:https://blog.csdn.net/ChuMeng1999/article/details/127588932

--结束END--

本文标题: SQL注入之绕过is_numeric过滤

本文链接: https://www.lsjlt.com/news/385081.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL注入之绕过is_numeric过滤
    目录 预备知识PHP常用的过滤类函数is_numeric()函数介绍 实验目的实验环境实验步骤一通过源代码审计,发现临时文件 实验步骤二通过分析源代码的执行逻辑,了解程序的功能,发现程...
    99+
    2023-08-31
    数据库 php mysql sql 安全
  • SQL注入技巧之显注与盲注中过滤逗号绕过的示例分析
    小编给大家分享一下SQL注入技巧之显注与盲注中过滤逗号绕过的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.联合查询显...
    99+
    2024-04-02
  • sql防注入怎么绕过
    如何绕过 sql 注入防护 SQL 注入是一种恶意攻击技术,攻击者通过将 SQL 查询注入到应用程序中来获取对数据库的未授权访问。为了保护应用程序免受 SQL 注入攻击,开发人员通常会实...
    99+
    2024-05-30
  • CTF笔记:PHP函数is_numeric()绕过
    在做CTF过程中遇到的is_numeric()函数,作用是判断输入是不是数字或数字字符串。 思路1:数值->非数值 原题是[极客大挑战 2019]BuyFlag,判断代码如下: if (is_numeric($password)) {ech...
    99+
    2023-09-27
    php web安全 安全
  • SQL注入绕过的示例分析
    这篇文章主要介绍了SQL注入绕过的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言sql注入在很早很早以前是很常见的一个漏洞。后来...
    99+
    2024-04-02
  • 实战绕过WTS-WAF的SQL注入
    实战绕过WTS-WAF的SQL注入 1.前言2.测试流程2.1.发现漏洞2.1.1.正常页面2.1.2.WAF警告2.1.3.非正常页面 2.2.判断字段数2.2.1.非正常页面2.2....
    99+
    2023-09-10
    数据库 mysql web安全 网络安全 信息与通信
  • sql注入过滤逗号怎么办
    sql注入过滤逗号的解决方法:通过case when then绕过,例如:mysql> select * from lbcms_admin where a...
    99+
    2024-04-02
  • sql注入要过滤哪些字符
    sql注入要过滤的字符有:--,#,//(,)括号||,+, (空格)连接符' 单引号|(竖线符号)& (& 符号);(分号)$(美元符号)%(百分比符号)@(at 符号)'(单引号)"(引号)\'(反斜杠转义单引号)\"(反斜杠转义引号)...
    99+
    2024-04-02
  • SQL注入绕过的知识点有哪些
    这篇文章主要介绍SQL注入绕过的知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 绕过waf思路从第一步起,一点一点去分析,然后绕过。1、过滤 and,orp...
    99+
    2024-04-02
  • Springboot详解如何实现SQL注入过滤器过程
    目录1.过滤器SqlInjectFilter2.请求装饰类CustomRequestWrapper3.过滤器注册4.测试辅助类4.1 结果对象ResultObj4.2 Restful...
    99+
    2024-04-02
  • 3-SQL过滤
    # 筛选最大生命值大于6000,最大法力值大1700的英雄,然后按照二者之和从高到低进行排序 SELECT NAME     ,     hp_max,     mp_max  FROM     heros  WHERE  ...
    99+
    2019-06-25
    3-SQL过滤
  • Web网络安全分析SQL注入绕过技术原理
    目录SQL注入绕过技术大小写绕过注入双写绕过注入编码绕过注入内联注释绕过注入SQL注入修复建议过滤危险字符使用预编译语句SQL注入绕过技术 大小写绕过注入 使用关键字大小写的方式尝试...
    99+
    2024-04-02
  • Spring Boot之过滤器 Filter注入的方式解析
    目录过滤器 Filter注入的方式第一种第二种第三种方法四注入自定义Filter过滤器 Filter注入的方式 第一种 @WebFilter(filterName = "myFi...
    99+
    2024-04-02
  • PHP is_numeric()函数详解,PHP判断变量是否为数字或数字字符串,is_numeric()绕过
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ...
    99+
    2023-09-05
    php 网络安全 人工智能
  • CTF之SSRF常见绕过
    1.绕过localhost和127.0.0.1 当程序中限制了我们使用localhost和127.0.0.1时,便可以利用进制转换来绕过 http://0x7F.0.0.1//16进制htt...
    99+
    2023-10-08
    php ctf ssrf 绕过
  • CTF之preg_match()函数绕过
    文章目录 前言0x01 正则表达式是什么0x02 回溯的过程是怎样的0x03PHP的pcre.backtrack_limit限制利用0x04 PCRE另...
    99+
    2023-09-11
    php 正则表达式 开发语言
  • pikachu靶场CSRF之TOKEN绕过
    简介 Pikachu靶场中的CSRF漏洞环节里面有一关CSRF TOKEN,这个关卡和其余关卡稍微有点不一样,因为表单里面存在一个刷新就会变化的token,那么这个token是否能绕过呢?接下来我们来...
    99+
    2023-09-12
    csrf php 前端
  • sql如何过滤重复
    sql 中过滤重复记录的方法包括:使用 distinct 关键字去除重复值。使用 group by 子句分组结果并返回每组的第一行。使用 count() 函数查找出现多次的值并进一步过滤...
    99+
    2024-06-06
  • PHP的SQL注入完整过程
    这篇文章主要介绍“PHP的SQL注入完整过程”,在日常操作中,相信很多人在PHP的SQL注入完整过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP的SQL注入完整过程”...
    99+
    2024-04-02
  • 文件上传之,waf绕过(24)
    上传参数名解析:明确哪些东西可以修改 content-disposition:一般可更改    表单的数据  name:表单参数值,不能更改    表单提交的值 filename:文件名,可以修改    上传的文件名 content-typ...
    99+
    2023-09-04
    html 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作