首页 > 其他分享 >异或绕过及其原理

异或绕过及其原理

时间:2024-03-26 22:35:16浏览次数:24  
标签:字符 GET 二进制 hex 异或 原理 绕过 ff%

异或的原理

总的来说,异或就是两个字符的二进制进行异或

比如:

a=01010101; //假设其为二进制
b=10101010;
c=a^b;        //进行异或
c=11111111;
总的来说就是两个字符二进制一个为0,另一个为1时,异或结果为1
只要不同就为1,相同就为0。

为什么上面的异或和在CTF题中看到的不一样

相信有很多人和我最开始一样,对异或还是有有点疑惑,我们平时异或出的为字母,而不是二进制,这到底该怎么判断呢?

我们知道大部分字符都可以用ascii码表示,而异或通过ascii码就可以输出所有字符,并且利用16进制将其变为不可见字符,就可以实现大部分字符的绕过操作。

例如:
1^2 //输出1
0x1^0x2//输出1

而我们大部分都利用%ff进行异或,他在16进制中表示255。

其中我们经常使用的_GET的ASCII码为

_GET
95 71 69 84

然后将其转化为hex(16进制编码),再进行异或。

hex(95)
'0x4f'
hex(0x4f^0xff)
'0xa0'
hex(71)
'0x47'
hex(0x47^0xff)
'0xb8'
.....

得到'0xa0 b8 ba ab'
'0xa0b8baab'将其与'0xffffffff'异或变成了_GET
所以我们urlencode后就为(%a0%b8%ba%ab)^(%ff%ff%ff%ff)

所以,我们可以这样进行绕过。

最后,附上异或脚本

<?php
$l='';
$r='';
$argv= str_split("_GET");//更改里面的值,改为需要的字符
for($i=0;$i<count($argv);$i++)
{
    for($j=0;$j<255;$j++)
    {
        $k=chr($j)^chr(255);
        if($k==$argv[$i])
        {
            if($j<16)
            {
                $l.="%ff";
                $r.="%0".dechex($j);
                continue;
            }
            $l.="%ff";
            $r.="%".dechex($j);
        }
    }
}
echo "\{$l^$r\}";

标签:字符,GET,二进制,hex,异或,原理,绕过,ff%
From: https://www.cnblogs.com/follycat/p/18097778

相关文章

  • PHP常用的无参函数绕过
    PHP常用的无参函数绕过getallheaders()这个函数的内容就是获取http所有的头部信息。接着我们可以用var_dump函数来把函数的执行结果都打印出来。这个函数有一个缺陷,它只能在apache中间件环境下使用。我们来在本地测试一下无参函数的具体效果。测试代码:<?phphighlight_file(__......
  • webpack loader和 plugin 实现原理
    1.webpack打包基本原理webpack的一个核心功能就是把我们写的模块化的代码,打包之后,生成可以在浏览器中运行的代码,我们这里也是从简单开始,一步步探索webpack的打包原理1.1一个简单的需求我们首先建立一个空的项目,使用npminit-y快速初始化一个package.json,然后安装webpa......
  • SpringBoot基础24_SpringBoot3原理分析
    一、起步依赖原理分析1、分析spring-boot-starter-parent按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置):<parent><groupId>org.springframework.boot</groupId><artifactId>spr......
  • iMessage群发的原理介绍!
    iMessage是苹果公司推出的即时通讯服务,允许用户在iOS、macOS等设备之间进行文字、图片、音频、视频等多种形式的通讯,随着移动互联网的发展,iMessage已成为许多用户日常生活中必不可少的沟通工具。其中,iMessage群发功能更是受到了广大用户的青睐,那么,iMessage群发的原理是什么呢?......
  • 【一】了解计算机的原理以及Python
    【一】编程和编程语言是什么【1】什么是编程编程其实就是将人类的语言转换为计算机能识别的语言【2】什么是编程语言人和人之间都会进行交流人和人之间交流的媒介就是语言编程语言就是人与计算机之间进行交流的语言【3】为什么要出现编程语言最根本的原因就是计算机......
  • 交换原理
    交换原理数据在计算机网络中从源到目的地,中间要经过链路以及交换节点交换节点有链路层交换机(Switch)以及路由器(Router)数据具体是如何进行交换的?计算机和因特网开端可以追溯到电话网,一种采用电路交换的通信网络,然后由于计算机和因特网的发展,其用户产生的流量具有突发性,即活动的......
  • 4D毫米波雷达原理和系统方案
    4D毫米波雷达原理和系统方案附赠自动驾驶学习资料和量产经验:链接4D毫米波雷达的性能比一般的“3D”雷达要高,体现在距离远,精度高,角分辨率高等方面。那么4D成像毫米波雷达是如何做到的呢?本篇文章从雷达指标方程上进行简要的解释,以及介绍一下主流的4D毫米波雷达系统方案。1.......
  • 4D毫米波雷达原理和系统方案
    4D毫米波雷达原理和系统方案附赠自动驾驶学习资料和量产经验:链接4D毫米波雷达的性能比一般的“3D”雷达要高,体现在距离远,精度高,角分辨率高等方面。那么4D成像毫米波雷达是如何做到的呢?本篇文章从雷达指标方程上进行简要的解释,以及介绍一下主流的4D毫米波雷达系统方案......
  • 【IT老齐072】全文检索执行原理
    【IT老齐072】全文检索执行原理全文检索引擎就是对非结构化文本进行解析、搜索的技术非结构化文本的处理关键在于分词与倒排索引分词分词是指将一段文本中有用的词汇提取出来常见的中文分词算法Ngram穷举n=2语法分析+字典:按中文动名词分析推测外加分词字典维护爬......
  • Mybatis的接口映射原理
    1、问题引入在使用Mybaits时,只需要写一个Mapper接口(不用写实现类),并在对应的xml文件中写好sql。然后,Mybatis就自动实现了具体的CRUD方法调用。通常我们使用Mybatis的主要步骤是:构建SqlSessionFactory(通过xml配置文件,或者直接编写Java代码)从SqlSessionFactor......