ez_curl

题目来源

攻防世界  NO.GFSJ1188

题解

是一个PHP的代码审计

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

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

【攻防世界】ez_curl的更多相关文章

  1. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  2. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

  3. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  4. 【攻防世界】高手进阶 pwn200 WP

    题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...

  5. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  6. 攻防世界 | CAT

    来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...

  7. 攻防世界 robots题

    来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...

  8. 【攻防世界】 高手进阶区 Recho WP

    0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...

  9. CTF -攻防世界-crypto新手区(5~11)

    easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间  明明没算错 ...

  10. 攻防世界web新手区做题记录

    学校信安协会第一次培训结束后的作业,要求把攻防世界的web新手区题目做一遍并写题解. 第一题 view_source 查看源代码右键不能用,但是F12能用,于是找到源代码 输入到flag框即可 后来在 ...

随机推荐

  1. IOS多线程之NSOperation(3)

    IOS多线程之NSOperation(3) 操作优先级和服务质量 可以通过QueuePriority属性来设置operation在队列中的执行优先级 public enum QueuePriority ...

  2. Qt开发经验小技巧226-230

    qtc开发工具内置了不少的函数,可以很方便的进行一些判断和处理. //最小版本要求 !minQtVersion(5, 15, 2) { message("Cannot build Qt In ...

  3. Qt 5.15.6 发布

    一.前言 我们今天为商业许可证持有者发布了 Qt 5.15.6 LTS.作为补丁版本,Qt 5.15.6 没有添加任何新功能,但提供了错误修复和其他改进. 您可以使用维护工具在现有的在线安装中添加 Q ...

  4. EPPlus使用方法---Excel处理我觉得超级好用

    目前只是用到导出Excel功能,导出大规模数据量速度也很快,而且比较容易操作(最起码导出是,暂时没有用到处理已存在的excel功能,有人说NPOI也好用,试了一下,最起码导出这个不如EPPlus    ...

  5. Win7/8/10操作系统之间通过“映射网络驱动器”映射共享目录或者网络磁盘,有的可以映射成功,有的不成功的原因和终极解决办法

    Win7/8/10操作系统相互之间通过"映射网络驱动器"映射共享目录或者网络磁盘,有的可以映射成功,有的不成功 原因: 待添加映射驱动器的计算机的"网络发现"和 ...

  6. BotSharp:又一个.Net重磅AI开源项目,.Net在AI领域开始崛起!

    大家好,我是编程乐趣. 自从大模型爆火以来,.Net不管是官方.还是社区开源项目,都陆续推出很多重磅的项目. 在AI领域,对话即平台(CaaP)是未来的发展方向. 下面介绍一个开源项目,面向AI Bo ...

  7. 「V 曲闲谈」《万物与我同归于寂》——终与始

      死亡, 胃酸逆流 失去最初模样 开端与结局颠倒 脉搏也摇晃   于强烈的动机下选定这首歌,但构思时又发觉,一个十六岁的青年,似乎在这个艰涩的哲学问题上难以开口.   那么先来说说我的动机.为什么我 ...

  8. 记一次 contentInsetAdjustmentBehavior 引发的bug

    注:本文同步发布于微信公众号:stringwu的互联网杂谈记一次 contentInsetAdjustmentBehavior 引发的bug 1 背景 项目中使用到了UILable来展示相关的文本内容 ...

  9. CDS标准视图:催款代码描述 I_DunningKeyText

    视图名称:催款代码描述 I_DunningKeyText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Key - Text' @Analytics. ...

  10. 常用的MySQL备份/还原 的方法

    mysql备份数据库 mysql备份单个数据库 #mysql备份某个库格式: mysqldump -h主机名 -P端口 -u用户名 -p"密码" --database 数据库名 & ...