CTF-web题目集合

这里记录了CTF题目中个人觉得比较有意思的web题目或者有意思的解法。

以下是涉及的题目来源:

  • ISCC2016
  • 61DCTF
  • jarvisoj
  • HITCON CTF 2016

一句话木马利用

# 来源

题目链接在这里

小明入侵了一台web服务器并上传了一句话木马,但是,管理员修补了漏洞,更改了权限。更重要的是:他忘记了木马的密码!你能帮助他夺回控制权限吗?
关卡入口:http://web.jarvisoj.com:32782/

# 解析

打开地址后发现,有一张图片<img src="proxy.php?url=http://dn.jarvisoj.com/static/images/proxy.jpg" alt="">和一个管理员链接http://web.jarvisoj.com:32782/admin,管理员链接点开后发现没有权限,源码中有admin的IP地址。

我们通过分析题目可以得出,小明上传了一句话木马,而常见的一句话木马一般是以下这种形式:

1
2
3
4
5
evil.php
eval($_GET['url']);
或者:
echo file_get_contents($_GET[a]);

所以我们可以合理的猜测,proxy.php为其上传的木马,url为我们传递的恶意参数,可以理解为使用proxy.php去代理请求,那么我们很自然的可以构造出管理链接:

1
http://web.jarvisoj.com:32782/proxy.php?url=http://web.jarvisoj.com:32782/admin

但是权限是不够的,可以合理猜测admin是有权限访问/admin路径的,则最终payload为:

1
http://web.jarvisoj.com:32782/proxy.php?url=http://103.27.76.153/proxy.php?url=http://web.jarvisoj.com:32782/admin/

文件上传 & 文件包含

# 来源

题目链接在这里

“没有什么防护是一个漏洞解决不了的,如果有,那
就…..

# 解析

其最核心的有2点:

  1. 图片的一句话木马除了<?php phpinfo(); ?>还可以<script language="php">phpinfo();</script>
  2. 其根据index.php?page=view/submitpage参数去使用fopen()打开相应的文件,可以使用fopen(uploads/xxx.jpg%00)截断后面的php

敏感信息泄露

# 来源

61DCTF中的web题中基本给个假index,然后去寻找真正的入口。

# 解析

  • 可以去搜寻index.phps或者index.php~去获取源码,如果没有额外的页面,往往可以在这些页面中找到结果。
  • 注意url、文件、资源的打开、传递方式,往往能够得到读取任意文件内容的方式(虽然实战中基本不会出现)

一些隐藏文件被误上传到了服务器上而且可以被访问,往往泄露重要信息:

  • .git 可以得到版本分支和源码等信息
  • .DS_Store MAC下自动生成的用于Finder布局的信息,可以造成文件名泄露
  • .ideaphphstorm等开发的配置文件等内容

php 反序列化

# 来源

  • HITCON 2016 代码审计
  • jarvisoj web phpinfo

# 解析

php反序列化一般利用点:

  1. CVE-2016-7124,绕过__wakeup函数
  2. serialize_handler不一致造成的对象注入,phpphp_serialize区别
  3. upload_progress的利用