这里记录了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地址。
我们通过分析题目可以得出,小明上传了一句话木马,而常见的一句话木马一般是以下这种形式:
|
|
所以我们可以合理的猜测,proxy.php
为其上传的木马,url
为我们传递的恶意参数,可以理解为使用proxy.php
去代理请求,那么我们很自然的可以构造出管理链接:
|
|
但是权限是不够的,可以合理猜测admin是有权限访问/admin
路径的,则最终payload
为:
|
|
文件上传 & 文件包含
# 来源
“没有什么防护是一个漏洞解决不了的,如果有,那
就…..
“
# 解析
其最核心的有2点:
- 图片的一句话木马除了
<?php phpinfo(); ?>
还可以<script language="php">phpinfo();</script>
- 其根据
index.php?page=view/submit
的page
参数去使用fopen()
打开相应的文件,可以使用fopen(uploads/xxx.jpg%00)
截断后面的php
敏感信息泄露
# 来源
61DCTF
中的web题中基本给个假index,然后去寻找真正的入口。
# 解析
- 可以去搜寻
index.phps
或者index.php~
去获取源码,如果没有额外的页面,往往可以在这些页面中找到结果。 - 注意
url
、文件、资源的打开、传递方式,往往能够得到读取任意文件内容的方式(虽然实战中基本不会出现)
一些隐藏文件被误上传到了服务器上而且可以被访问,往往泄露重要信息:
.git
可以得到版本分支和源码等信息.DS_Store
MAC下自动生成的用于Finder
布局的信息,可以造成文件名泄露.idea
用phphstorm
等开发的配置文件等内容
php 反序列化
# 来源
- HITCON 2016 代码审计
- jarvisoj web phpinfo
# 解析
php反序列化一般利用点:
- CVE-2016-7124,绕过
__wakeup
函数 serialize_handler
不一致造成的对象注入,php
和php_serialize
区别upload_progress
的利用