CTF-位运算绕过报错

[CTF] 从fakebook看SQL注入:绕过过滤与LOAD_FILE的实战利用 本文详细解析了CTF题目fakebook中的SQL注入漏洞,重点介绍了如何绕过关键词过滤机制并利用LOAD_FILE函数读取服务器文件。通过实战案例展示了union select注入、注释符绕过技巧以及文件读取payload的构造方法,为安全研究人员提供了实用的渗透测试思路。 阅读详情
<?php
echo "\xfa\xfa\xfa\xfa\xfa\xfa\xfa"^"\x8a\x92\x8a\x93\x94\x9c\x95";
echo "\x50\x68\x50\x68\x68\x66\x66"|"\x30\x48\x30\x49\x4e\x62\x4f";
echo urldecode('%30%48%30%49%4e%62%4f');
$v3=$_GET['v3'];
eval("$v3;");
$v2=$_GET['v2'];
eval("$v2;");

?v3=(%fa%fa%fa%fa%fa%fa%fa^%8a%92%8a%93%94%9c%95)()&v2=(%50%68%50%68%68%66%66|%30%48%30%49%4e%62%4f)()

猜猜为啥这俩都是phpinfo(),v3能跑出来,v2就不行?

因为php的位运算符不是对字节使用,而是对数字使用

哈,他妈了个逼的

猜猜%30是啥字符?

哦,%30是字符0

猜猜字符0放开头会咋样?

没错,他没了,他直接就没了。

然后就成了7字节与6字节,然后就顺理成章的报错了深挖了一下,还不是这个原因

什么叫他妈的惊喜,这就叫他妈的惊喜

怎么解决?%30换成%70,这俩和%50与出来结果一样的

最后附上我看了整整三个小时的报错:

Parse error: syntax error, unexpected ‘H0INbO’ (T_STRING) in D:\phpstudy_pro\WWW\index.php(8) : eval()'d code on line 1


且慢,好像问题并没有这么简单。

如果是%30被识别为0导致的,那么第三个字符应该也不正常才对,因为第三个字符也用了%30。

v2的两段字符分别是:PhPhhff | 0H0INbO

然后深挖了一下,作出了一个错误的猜测:

php是弱类型语言,所以开头是数字的字符串其实是一个非常玄学的东西,官方称之为数字字符串。

https://www.php.net/manual/zh/language.types.numeric-strings.php

当一个 string 需要被当作一个数字计算时,(例如:算术运算, int 类型声明等),则采取以下步骤来确定结果:

  1. 如果 string 是数字,当 string 是整数字符串并且符合 int 类型的范围限制(即是 PHP_INT_MAX 定义的值),则解析为 int ,否则解析为 float 。
  2. 如果上下文允许前导数字和一个 string,如果 string 的前导部分是整数数字字符串且符合 int 类型限制(由 PHP_INT_MAX 定义),则解析为 int ,否则解析为 float 。 此外,还会导致 E_WARNING 级别的错误。
  3. 如果 string 不是数字,则会抛出一个 TypeError 的异常。

由第二条可知,数字字符串会根据上下文决定自己是个字符串还是个数字,两者都可时优先解析为数字。

巧合的是,位运算符恰好可以对字符串和数字两种类型进行运算,两边是字符串时对ascii码进行位运算,是数字时对数字进行位运算。

https://www.php.net/manual/zh/language.operators.bitwise.php

如果 &、 | 和 ^ 运算符的左右两个操作对象都是字符串,将对会组成字符串的字符 ASCII 值执行操作,结果也是一个字符串。除此之外,两个操作对象都将 转换为整数 ,结果也将会是整数。

所以,数字字符串并不能根据所谓的上下文*(位运算符)*来确定自己的类型,于是就优先解析为数字了。

在解析为数字的时候,程序自动去除数字前方的0和前缀*(这里的0应该是解析为8进制表示的前缀)*,保留后面的有效数字,问题就出在这里。

在去除掉第一个0的时候,程序期待从后面得到一个8进制数字,但却得到了一个字符串H0INbO。

所以,程序报错:

Parse error: syntax error, unexpected ‘H0INbO’ (T_STRING) in D:\phpstudy_pro\WWW\index.php(8) : eval()'d code on line 1


听上去挺有道理哈?

但上边全部的猜测都是错的。

在实际测试中,我把后面的0H0INbO换成了01H0INbO。

如果报错变成了预期在|之前得到一个数字,但却得到了一个字符串的话,就证明我的猜测是正确的。

但实际情况是,报错没变,0换成任何数字都不变,都只报数字后面的6位字符串。

甚至当我在PhPhhff前方加上数字时,报错变成了PhPhhff。

仔细想想,上面的猜测确实有问题。

  1. 在位运算符判断类型的时候,为什么不是从第一个参数开始判断,而是从第二个参数开始?
  2. php识别数字字符串的值会先忽略掉后面的字符,而不是带着字符开始转换。

当我把eval里的东西拿出来,直接放到vscode里的时候,看到代码高亮,我悟了。

0H0INbO根本就不是一个字符串。

PhPhhff是一个字符串不假,PhPhhff即使没有引号,是一种不规范的写法,php仍然将其识别为一个字符串。

但是0H0INbO,他被识别为一个数字0,和一个字符串H0INbO。

所以程序报:

Parse error: syntax error, unexpected ‘H0INbO’ (T_STRING) in D:\phpstudy_pro\WWW\index.php(8) : eval()'d code on line 1

,是因为程序在位运算符后接收到数字0之后,就接收到了全部两个需要的参数,即使他们类型不同,但前面的字符串已经被转换成了ascii码组成的二进制数字。他们仍然可以进行运算。

此时,程序希望得到一个右括号)来结束语句,因为就(“system”)(“ls”)这种形式的命令来说,system位置的字符串已经由PhPhhff和0的与运算得到了结果。

但程序得到了被识别为字符串的H0INbO。

所以程序报unexpected的原因在这,程序没有得到希望的右括号。

这才是这个问题的真正原因。

CTF实战:绕过WAF的SQL注入技巧与防御策略 SQL注入是一种常见的Web安全漏洞,攻击者通过构造恶意SQL语句,能够非法操作数据库,窃取敏感数据。其原理在于应用程序未对用户输入进行充分过滤,使得输入数据被直接拼接到SQL查询中执行。理解SQL注入的技术价值在于,它不仅是渗透测试的核心技能,也是构建安全应用必须防范的风险。在CTF竞赛和实际攻防场景中,Web应用防火墙(WAF)常被部署以拦截此类攻击,但攻击者可通过字符变形、语法特性利用等手段尝试绕过。例如,通过大小写混合、内联注释或空白符替换等技巧,可以构造对WAF“无害”但对数据库有效的payloa 阅读详情

相关推荐

PHP无字母数字RCE漏洞:异或与取反绕过技术详解

远程代码执行(RCE)是Web安全中的高危漏洞,攻击者可通过注入恶意代码在服务器上执行任意命令。其原理通常源于应用程序对用户输入未充分过滤,直接将输入传递给危险函数如eval()或system()。在PHP中,当常规字符被过滤时,可利用语言特性进行绕过,例如通过异或(^)和取反(~)等位运算动态生成所需字符。这些技术展现了安全攻防中过滤与绕过的持续博弈,对于渗透测试和CTF竞赛中的代码审计与漏洞利用至关重要。本文以一道典型CTF题目为例,深入解析如何利用PHP异或运算和取反运算构造无字母数字的Payload

weixin_32736961的博客 304

SQL注入绕过实战:从基础过滤到无列名注入的完整攻防解析

SQL注入作为Web安全领域的经典漏洞,其核心原理在于攻击者通过构造恶意SQL语句,干扰应用程序与数据库的正常交互逻辑,从而窃取或篡改数据。在安全防护日益增强的今天,WAF(Web应用防火墙)和输入过滤机制成为常见防御手段,这促使攻击技术不断进化,衍生出各种绕过技巧。其技术价值在于深刻理解数据库解析机制与安全过滤规则的博弈,是检验安全工程师对底层原理掌握程度的重要标尺。典型的应用场景包括渗透测试、CTF竞赛以及企业安全评估,其中涉及对空格、等号、关键词及系统表访问的层层过滤。本文以一道融合了多重过滤机制的经

weixin_29323049的博客 297

python 中文显示 \xb2\xe2\xca\xd4\xd6\xf7\xbb\xfa

# !/usr/bin/env python # -*- coding: utf-8 -*- import cx_Oracle from pprint import pprint import csv import time import re import binascii conn = cx_Oracle.connect('system/oracle@192.168.137.2/serv')

zhaoyangjian724的专栏 1万+

UniApp X 网络请求避坑指南:从 JS 到 UTS 的 JSON 数据处理全解析

摘要:UniAppX开发中处理JSON数据时,UTS强类型特性要求开发者改变JS习惯。本文对比两种主流方案:1)UTSJSONObject通过keypath访问数据,兼容JS但缺乏类型提示;2)type+泛型方案,通过定义数据类型实现强类型校验和智能提示,推荐用于固定数据结构。文章详细演示了两种方式的具体实现、转换方法及实战案例,并提供了类型定义技巧和注意事项,帮助开发者编写更稳定高效的跨平台应用。

归梦工作室 2790

FAST_LIO_ROS2 可以用gazebo仿真吗?

摘要:FAST_LIO_ROS2可与Gazebo仿真环境兼容,通过订阅Gazebo模拟的激光雷达和IMU数据实现SLAM建图。已有开源项目(如pb_rm_simulation)验证了该方案,支持导航模式切换与真实机器人移植。关键步骤包括环境配置、传感器话题匹配及参数调试,需注意版本兼容性与数据噪声处理。相关教程提供了从环境搭建到三维建图的完整流程。

专注 激光SLAM, 目标检测, 欢迎关注, 分享交流! 1138

SAM2与Docker的完美组合:5分钟搞定Linux环境下的图像分割部署

本文详细介绍了如何在Linux环境下通过Docker快速部署SAM2图像分割模型,解决安装过程中的常见问题。文章提供了从镜像选择、CUDA版本匹配到容器构建的全流程指南,特别针对GPU加速环境下的'cudnn_frontend: No execution plans support the graph'等报错提供了实用解决方案,帮助开发者在5分钟内完成高效部署。

fern8的博客 933

【2021最新版】Dubbo面试题总结(40道题含答案解析)

文章目录1、为什么要用Dubbo?2、Dubbo的整体架构设计有哪些分层?3、默认使用的是什么通信框架,还有别的选择吗?4、服务调用是阻塞的吗?5、一般使用什么注册中心?还有别的选择吗?6、默认使用什么序列化框架,你知道的还有哪些?7、服务提供者能实现失效踢出是什么原理?8、服务上线怎么不影响旧版本?9、如何解决服务调用链过长的问题?10、说说核心的配置有哪些?11、Dubbo推荐用什么协议?12、同一个服务多个注册的情况下可以直连某一个服务吗?13、画一画服务注册与发现的流程图?14、Dubbo集群容错有

程序媛小琬的博客 1万+

用ADS复现一篇MTT顶刊的GAN功率放大器:从理论推导到版图仿真的完整避坑指南

本文详细解析了如何利用ADS软件复现MTT顶刊中的E/F3类GaN功率放大器设计,从理论推导到版图仿真的全流程。通过核心设计理念解析、ADS环境配置、输出匹配网络优化等关键步骤,提供了一套完整的工程实践指南,帮助工程师跨越学术理论与实际应用的鸿沟,实现高效率射频功率放大器的设计。

weixin_30654583的博客 315

Error: Flash Download failed - Target DLL has been cancelled

由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片机中。现整理一下解决思路: 1、将支持包下载并添加: 找到你需要用的MCU的具体型号: 例如: 点击网址,下载安装包,或者在csdn等其他网址下载安装包,将下载好的pack包放到keil5的安装目录下的.Download中: 点击file中的import,将路径选择到.........

hanhan的博客 5万+

AI产品经理面试宝典第9天:关于AI产品经理的挑战与转型怎么回答

AI技术重构产品逻辑,AI产品经理需直面三大核心命题:用户定位差异、技术融合边界、商业价值转化。本文从千道真题中提炼出面试高频考点,剖析AI产品经理如何突破传统思维定式,在B端需求与C端体验间构建价值桥梁,用数据驱动产品创新,破解技术落地的隐性壁垒。掌握这三重跃迁法则,助你在AI浪潮中脱颖而出。

打造全国最全的AI Agent开发知识领域的博客 176

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

下一篇: 攻防世界web新手练习unseping
ScyCree
博客等级 码龄6年 36粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ScyCree

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值