【芝士】%ff%ff%ff%ff%ff%ff%ff || 0xff0xff0xff0xff0xff0xff0xff 异或,~ 取反过rce 自己应该是弄明白了,

目的:

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
//${_GET}{%ff}();&%ff=phpinfo

这个是大家常见的异或的bypass的payload。我看网上很多都是说“这里有个payload”,…然后就没有什么了,我这个payload也用了一段时间,

也是 知其然不知其所以然,用也这么用了,然后后面碰到题,,一变化就不会了,所以今天弄弄,看看能弄明白不,

关于这个%ff 以及异或的事情,咱们好好唠唠

这个这个,异或,只能够是数字和数字之间异或,原理是转为二进制进行异或,这个不用关了,只需要知道是数字与数字之间异或就可了,

然后多个字符,一个长传之间进行异或,会对应位进行异或,然后然后将异或之后的结果拼接成为一个新的大长串。

在这里插入图片描述

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
//${_GET}{%ff}();&%ff=phpinfo

按两块异或会出 _GET这个东西。

在这里插入图片描述
能够接收,毕竟异或就是用不可见字符相异或表示出我们想要的字符串么,
然后为了传输,就进行一下url编码,便于传输和识别,

${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
//${_GET}{%ff}();&%ff=phpinfo

这里找到了一个对上述的解释:

这里用到的关键符号就是^,用到的方法是利用不可见字符的异或来构造_GET对函数进行调用,首先是获取_GET的ascii码值

在这里插入图片描述
然后使用0xff分别对这几个字符进行异或操作
.。疑问??为什么 费用 这个东西进行异或操作啊,
在这里插入图片描述
在这里插入图片描述
得到了字符串0xa0b8baab(均为不可见字符),将其与0xffffffff进行异或操作,就变成了_GET了,所以payload为:

?_=${%ffffffff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo

迷迷瞪瞪地
在这里插入图片描述

到这里我明白一些了,,,

url编码也是16进制的,所以0xff 进行urlencode之后,%ff,就是了

10进制异或可以,16进制异或也行,所以我们看到都是16进制进行异或的时候,都是用0xff,这个东西就是10进制的255,我也不知道为什么非用这个,

code=${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&%ff=phpinfo
code=${_GET}{phpinfo}();   ->  code=$_GET{phpinfo}()

因为url也是16进制编码的,而且a^b^b = a所以下面的这个%a0%b8%ba%ab就是0xa0xb80xba0xab,连在一起就是0xa0b8baab。16进制的a0 b8 ba ab对应的就是10进制的95 71 69 840xff^出来的,, 然后,,95 71 69 84对应的也就是_ G E T
也就是_GET每个字母都和0xff或者叫%ff或者叫255相异或,变成0xa0xb80xba0xab。进行bypass。然后,再次与%ff进行异或,就变成了_GET。就达成目的了,

那么至于为何1-255,非选择 0xff,,,癖好吧可能,,

取反~的话,跟异或没半毛钱关系,只是恰巧都是url编码,很像罢了,

上面这句话错了,,异或和取反有联系的,看下面,

最后,我已经可以手写异或了,,,

1. 单个字符 手写异或

.的异或bypass:
思路:.转为10进制,然后与0xff进行异或,得到的就是中间值,然后将中间值再与0xff进行异或就得到了.了。(16进制和10进制没区别,只是16进制便于再url中传输而已,)

在这里插入图片描述

2. 字符串手写异或:

比如_GET就参考上面的就行了,
**思路:**单个字符手写异或,然后拼起来就好了,拼接的时候用url编码进行拼接,一个是一个,连在一起就行了

异或和取反的练习

取反就是 变成二进制,然后每一位取反,0变1,1变0 . 。
异或:1^1=0 , 1^0=1

字符串取反就相当于 每一个 char 每一个字符取反,然后拼起来,

然后字符取反,就相当于 它的ascii码与0xff相异或,就是95^11111111。8位二进制数,因为 一个字符用二进制表示就是8位二进制数么,

所以说一个字符串取反,等于 这个字符串每个字符和0xff相异或然后拼起来是一样的。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值