首页 > 其他分享 >【攻防世界】ez_curl

【攻防世界】ez_curl

时间:2024-06-23 15:10:40浏览次数:19  
标签:攻防 NodeJS admin headers ez curl PHP true 1000

ez_curl

题目来源

攻防世界  NO.GFSJ1188

题解

是一个PHP的代码审计

img

同时还提供了一个附件app.js,打开后内容如下

img

app.js中:

  • req.query.admin.includes:要求在URL中admin字段的值不包含“false"子串(必须要有admin字段)
  • req.headers.admin.includes:要求在报文头部中admin字段的值包含“true”子串

解题思路:向PHP文件发出请求,该PHP文件从POST的数据中拿到变量$url$headers,向app.js发出请求。

绕过URL的判断

在PHP文件中可以看到URL由POST的params中的元素拼接而成,最后加上admin=false
在NodeJS中有以下知识点:express的parameterLimit默认为1000,即当参数个数大于1000时,后面的参数将被截断。
当我们给params赋值的成员个数大于1000时,$url中参数的个数将大于1000,因此1000以后的参数将失效,即可让$urladmin=false被截断。

绕过headers的判断

对于php文件中的绕过,有两种方法。在做题时可以将两个文件放到本地进行调试,有利于学习NodeJS解析的结果(本文跳过此步骤)

第一种

{"headers": ["xx:xx\nadmin: true"]}

我们可以看到admintrue字符串都在第一个冒号后面,因此可以绕过PHP代码的检测,而在NodeJS解析时,会解析得到admin的字段为true.

第二种

{"headers": ["admin: x", " true: y"]}

由于adminture出现在数组的两个元素中,因此可以绕过PHP文件的判断。在正常解析过程中,在键名中是不允许存在空格的,但NodeJS在遇到这类情况时是宽容的,会将其解析成

{"admin": "x true y"}

即NodeJS会将分隔符直接去掉。

构造body

python代码如下

import json

datas = {"headers": ["xx:xx\nadmin: true"],        
    "params": {"admin": "true"}}

for i in range(1020):
    datas["params"]["x" + str(i)] = i

json1 = json.dumps(datas)
print(json1)

其中datas中的headers可以构造为上面提到的第二种方法,也是可行的。
将运行得到的body使用POST方法进行传参,即可得到flag

img

标签:攻防,NodeJS,admin,headers,ez,curl,PHP,true,1000
From: https://www.cnblogs.com/MrSoap/p/18263469

相关文章

  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口差异&切换上线&IPC管道&AT&SC任务
    红队内网攻防渗透1.内网横向移动1.1横向移动入口知识点1.1.1、当前被控机处于域内还是域外1.1.1.1在域内1.1.1.2不在域内1.1.1.2.1第一种方法提权到system权限1.1.1.2.2第二种方法切换用户上线1.1.1.2.3kerbrute枚举用户1.1.2、当前凭据为明......
  • 红队内网攻防渗透:内网渗透之内网对抗:隧道技术篇&防火墙组策略&FRP&NPS&Chisel&Socks代
    红队内网攻防渗透1.内网隧道技术1.1Frp内网穿透C2上线1.1.1双网内网穿透C2上线1.1.1.1服务端配置1.1.1.2客户端配置1.1.2内网穿透信息收集1.1.2.1、建立Socks节点(入站没限制采用)1.1.2.2主动转发数据(出站没限制采用)1.2Nps内网穿透工具1......
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口切换&SMB共享&WMI管道&DCOM组件&I
    红队内网攻防渗透1.内网横向移动1.1WMI进行横向移动1.1.1利用条件:1.1.1利用详情1.1.1.1wmic1.1.1.1.1正向shell上线1.1.1.1.2反向shell上线1.1.1.2cscript(不建议使用)1.1.1.3wmiexec-impacket1.1.1.4cs插件1.2SMB横向移动1.2.1利......
  • Bezier曲线曲面--拟合技术
    Bezier曲线曲面–拟合应用1.Bezier曲线1.1.Bezier曲线的定义给定一组控制点P_0,P_1,…,P_n,其中n是曲线的阶数,Bezier曲线的参数方程可以表示为:B(t......
  • buildroot-2020.05生成不了bluez相应工具的解决方法
    使用buildroot-2020.05编译生成bluez时,无法生成bluetoothctl、hciconfig等工具,发现其默认使用的bluez版本为5.54,而我们验证改为5.52版本时才能生成这些工具,故做了如下修改:1.bluez5_utils a.修改package/bluez5_utils/bluez5_utils.mk文件,将   BLUEZ5_UTILS_VERSION=......
  • Hive怎么调整优化Tez引擎的查询?在Tez上优化Hive查询的指南
    目录在Tez上优化Hive查询的指南调优指南理解Tez中的并行化理解mapper数量理解reducer数量并发案例1:未指定队列名称案例2:指定队列名称并发的指南/建议容器复用和预热容器容器复用预热容器一般Tez调优参数在Tez上优化Hive查询的指南在Tez上优化Hive查询无法采用一刀切的方法。查询......
  • 【攻防技术系列】动态库和静态库有什么区别?
    计算机的运行当然离不开内存。程序运行在内存当中,那么程序在内存中的布局是什么样子的呢?程序的内存分为代码区、数据区、堆区和栈区,它们的布局是这样的,这里重点看代码区。代码区中是什么呢?这里主要就是你写的代码,当然还有你使用的库。这里主要是标准库,以及非标准库,也就是......
  • curl命令 – 文件传输工具
    curl命令来自英文词组CommandLineURL的缩写,其功能是在Shell终端界面中基于URL规则进行文件传输工作。curl是一款综合性的传输工具,可以上传也可以下载,支持HTTP、HTTPS、FTP等30余种常见协‍议。语法格式:curl参数网址URL文件名参考示例获取指定网站的网页源码:[root@linuxcoo......
  • linux - curl
    curl(commandlineuniformresourcelocator),URL命令行,用于发送http请求场景:项目运维过程中,如果没有postman工具,会用到这些命令;docker容器内,如果没有开放端口,只能进容器内用curl进行测试了。#不带有任何参数时,curl默认发出GET请求。curlhttps://www.baidu.com......
  • 一个案例,剖析攻防演练中威胁溯源的正确姿势
    一年一度的攻防演练即将拉开帷幕。“威胁溯源”一直是演练活动中一个十分重要的工作项,它不仅有助于理解和分析攻击的来源、方法和动机,还能够显著提升整体安全防护水位,提升组件与人员的联动协作能力。在真实的攻击场景中,溯源工作还能造成对攻击者的威慑,进一步净化网络安全空间。......