白帽公开课|CTF中Web各种题目的解题姿势

2020-03-27 95858人围观 FreeBuf公开课

940_400.jpg

Web题型是CTF中常考题型之一,本套课程将从CTF比赛的角度来讲解Web安全中注入、xss跨站、文件上传、SSRF、CSRF、反序列化安全、php编码安全、python解题常用方法等相关内容,用直接的语言讲解CTF 比赛中Web题目的思路与解决方法。 

讲师介绍

Lo36r

多年渗透测试实战经验,软考网络工程师,网络规划设计师,CISP-PTE渗透测试师。目前正在从事安全研究方面的工作。

为了让大家更深入地了解我们Lo36r老师及课程,FreeBuf公开课特邀Lo36r老师为大家分享相关技术文章《一个Webshell的深入思考》。 

image.png

什么是Webshell?

Webshell由Web应用脚本(PHP、JSP、ASP等)编写的允许攻击者访问数据、修改数据、删除数据、上传数据的恶意代码其他文件甚至执行系统命令来执行诸如创建新用户、读取系统等任务文件。

通常情况下Webshell被上传到可被访问的站点目录下,然后用户访问Webshell需要输入对应的用户验证信息。Webshell访问如下图:

image.png

Webshell需要用户输入正确的密码信息才能正常访问使用,否则无法正常访问使用。而密码信息存储在Webshell文件中,可以通过文本编辑器进行查看,也可以进行修改。当然也有一些Webshell没有认证密码,这样的Webshell非常少见。

image.png

接下来可以使用正常的密码angel访问Webshell文件,进入Webshell进行使用。在Webshell提供了多种功能包括:文件、数据库、命令执行操作等。

image.png

在Webshell中搜索command相关内容,可以轻易发现源代码都是未经过任何处理,直接暴露在文本编辑器中。对于这样的Webshell很容易被分析,那么使用各种防护软件就可以很直接的扫描并探测到该Webshell。

image.png

接下来使用某安全软件进行扫描,扫描结果很快就可以确定该php文件为一个木马文件。

image.png

对于这样的Webshell,一般情况下使用安全软件轻易就可以探测到,那么用户就可以进行删除。但是某些经过特殊处理的Webshell就不是轻易可以被探测到的。 

加密Webshell分析

单纯的源代码是容易被安全软件检测到,但是如果利用代码加密就很不容易被检测到了。如下图:

image.png

一般情况下,加密之后的内容才是Webshell的核心代码,实现各种操作。使用某安全软件进行扫描探测,发现当前加密的Webshell也无法扫描到。

image.png

这是由于真实的代码都被加密,而可以读取到的代码只是用于解密代码的操作。因此安全软件不经过解密是无法扫描探测到Webshell。

下面我们一起来分析下该Webshell,使用浏览器访问页面

image.png

仿佛我们经常在访问不存在的页面会出现这样的情况。但是如果我们通过浏览器查看源代码会有全新的发现。

image.png

特别注意当前页面存在一个form表单,用于提交用户提交的数据。但是在页面中为什么没有显示???

在HTML中可以使用style标签在代码中嵌入CSS代码用于调整页面的样式。其中#fff将表单中的所有显示内容填充为白色所以无法看到表单。

<style>input { margin:0;background-color:#fff;border:1px solid #fff; }</style>

所以眼见不一定为实,需要进一步分析才可以。查看页面源代码可以发现这一猫腻,在CTF比赛中很多情况下也需要查看源代码查找对应的Flag值,其中Flag可能位于页面中某个位置或通过CSS和注释进行因此需要时刻注意。

更有CTF赛题中设置JS避免用户可以通过鼠标右键查看页面源代码,此时就需要利用一下这样的URL查看你页面源代码。view-source:http://127.0.0.1/3cashell.php

通过以上分析,明确页面并非不存在,而是该页面代码有意隐藏。可以通过浏览器的调试工具进行登录框的显示,删除CSS隐藏样式。

image.png

在CTF比赛中,很多赛题进行隐藏信息的设置,甚至设置提交的长度限制,此时如果在前端设置,就可以利用浏览器调试工具进行去掉限制。

接下来为了进一步查看源代码,可以在站点目录下找到文件进行查看。

image.png

整个文件经过加密处理,我们初次拿到这样的文件完全不知所云。此时就需要进行代码的识别,例如你可以看到哪些具体的代码。未知代码 符号?>表示结束PHP代码。这里的未知代码很有可能时加密之后的真实代码。而我们能考懂的部分只是用于加密的代码。

<?php /*   Cod3d by 3xp1r3 – Dr3@m3r~1986  */  这段代码完全的注释部分,不起到代码作用,只作为代码说明。

$OOO000000=urldecode(‘%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64′);此段代码 调用函数urldecode对%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64进行解码,此时$OOO000000 就为解码后的内容。可以利用URL界面工具进行解码。

解码链接:http://www.jsons.cn/urlencode/

image.png

此时 明确 $OOO000000 = fg6sbehpra4co_tnd  在CTF比赛中也经常遇到编解码的问题,此类题目主要考察对编码特征了解的情况。例如URL、Base64等编码方式,主要是编码之后的特征。

由于$OOO000000 为字符串,就可以利用下标进行字符的提取。此时$OOO0000O0根据代码为

$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};

$OOO0000O0=fg6sbehpra4co_tnd{4}.fg6sbehpra4co_tnd{9}.fg6sbehpra4co_tnd{3}. fg6sbehpra4co_tnd{5}

$OOO0000O0=b.a.s.e = base   

特别注意字符串的下标索引是从0开始。

以此类推

image.png

其中有一段未知关键代码

image.png

等价于

image.png

使用base64解码

image.png

等价于

image.png

解码之后的内容为 :

image.png

此时我们将代码进行拷贝到3cadecode.php 。指定Webshell文件位置,从而从3cashell.php文件中获取源代码解密执行。并将eval替换为echo 进行代码输出

image.png

通过浏览器访问3cadecode.php文件,查看echo 输出的内容。

image.png

其中依旧具有eval代码,将其拷贝到3cadecode.php文件中,并替换eval为echo。

image.png

通过浏览器再次访问,并查看源代码

image.png

也可以使用php.exe 文件名执行

image.png

其中$auth_pass变量为密码的密文,可以在www.cmd5.com进行解密。得到密码为3cadev。

image.png

在CTF比赛中遇到32位或64位明文,可以在cmd5.com对密文进行解密。

使用解密之后的3cadev密码登录webshell,会进行跳转。

image.png

总结

1、CTF比赛中需要掌握的知识是实际环境中可能会用到的技术。

2、Webshell经过多种加密可以对安全软件的探测进行绕过。

3、眼见未必为实。

image.png

想要了解更多CTF中的相关WEB技术

可报名本课程进行学习

30+课时,1440min+课程时长

知识点结合真题,吃透各类Web题目

image.png

课程试听

课程大纲

一、 注入类

01 SQL注入原理与利用

02 SQL注入宽字节注入 + 赛题思路 解题方法 

03 SQL注入Union类型注入 绕过防御 过滤关键字

04 SQL注入 布尔注入 

05 SQL注入 报错注入

06 SQL注入 基于时间盲注 python脚本编写

07 SQL注入 insert delete 等注入

08 SQL注入 Fuzz + 构造绕过SQL语句

二、 命令执行 

01 命令执行介绍与利用 

02 无命令回显命令执行 + dnslog利用

03 无数字字母的命令执行

04 n位可控字符下命令执行

三、 上传类

01 文件上传白名单 解析绕过

02 文件上传 内容检查

03 文件上传 文件包含利用 

04 文件上传 竞争上传

四、 SSRF

01 IP限制绕过及gopher对redis利用

02 gopher对mysql利用

03 XXE Blind xxe

五、 反序列化 

01 反序列化 与 php bug 72663利用

02 session序列化相关问题 pchar序列化

六、 PHP安全编码 

01 弱类型相关问题

02 变量覆盖相关问题

03 空白字符相关问题

04 伪随机数相关问题

05 正则匹配相关问题

06 绕过disable_function绕过方法讲解

07 代码审计 源码获取+扫描+fuzz思路

七、 Python脚本编写

01 HTTP相关库讲解 requests  

02 Python – sql注入

03 python – Burpsuite插件开发

购课方式

原价499元,限时399元! 

报名链接:

https://live.freebuf.com/detail/e302882880e5ebf90b088ce43a58462d

二维码报名:

image.png

扫描二维码,点击“立即报名”即可完成购买

所有课程购买完毕后,可登入FreeBuf账号

我的主页→我的课程,查看课程视频及资料

相关推荐
取消
Loading...

特别推荐

推荐关注

官方公众号

聚焦企业安全

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php