CTF靶场系列结——综合环境
发布日期:2021-05-20 05:08:07 浏览次数:6 分类:技术文章

本文共 2429 字,大约阅读时间需要 8 分钟。

文章目录


前言

这次就是靶场系列的最后一篇了,这段时间学习这个系列的知识,感觉确实学到很多东西。现在做一下总结吧。


一、综合环境——低难度

tip:emmm,与之前重复的内容这里就不再提了,主要记录下思路。

使用nikto和dirb等工具探测过后,发现了以下敏感页

login.phpindex.phpconfig.php

其中login.php是个登录页面。没有信息,先查看源码(其实我先尝试了弱口令,但是没有成功,还是乖乖的看源码)

在源码的最后发现了javascript的代码

function control(){
var user = document.getElementById("user").value; var pwd = document.getElementById("pwd").value; var str=user.substring(user.lastIndexOf("@")+1,user.length); if((pwd == "'")){
alert("Hack Denemesi !!!"); } else if (str!="btrisk.com"){
alert("Yanlis Kullanici Bilgisi Denemektesiniz"); } else{
document.loginform.submit(); }}

审计这段代码:substring和lastIndexOf都是截取字符串的两个函数,首先来了解一下这两个函数。

substring()
m0re
注意:如果start传入的参数比stop的参数大的话,该函数会自动调换start和stop的位置。参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
下面是一个栗子:

string start = null;	string stop = null;	string str = "abcdefg";	start = str.Substring(0, 1);//从第一个开始截取,共截取一位	stop = str.Substring(str.Length - 1, 1);//从最后一个开始截取,共截取一位	Response.Write(qian + "***" + hou);

输出结果:a***g

lastIndexOf()
作用:可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索
m0re
注意:lastIndexOf() 方法对大小写敏感!
如果要检索的字符串值没有出现,则该方法返回 -1。

string str = "m0re";str = str.Substring(0, str.LastIndexOf("r"));Response.Write(str);

截取r前面的字符串,输出为m0

OK,这下再看代码就可以理解了。
1、首先lastIndexOf()先在user中查询@的位置,然后从其位置的后一位开始,到user的总长度这个范围内,substring函数起作用,截取字符串str。
2、继续,pwd不等于',猜测可能是防万能密码的吧。或者是绕过SQL注入。
3、str要等于btrisk.com
m0re
然后进来一个页面,闹了半天没发现什么,最后才知道是姿势错了。不过也没白折腾。有学到新知识。
正确的姿势:
对登录框进行fuzz测试,kali的wordlists下有字典,可以直接利用,抓包发送到 Intruder模块
m0re
载入字典进行fuzz测试
直接测试成功,看到response页面有内容,去字典中找到这个payload进行登录。
m0re
用户名:@btrisk.com密码:' or 1=1#

m0re

这才是正确的界面。
然后就是文件上传,基础漏洞。进行测试,只能传图片。
m0re
鉴于不知道是验证方式是什么,所以都测试一遍。先设置好代理,测试发现是前端检测。
使用burpsuite绕过前端检测,或者使用%00截断绕过。
只需要简单的修改后缀就可以了,其他的验证就没有了。
尝试可以进行绕过,就制作一个反弹shell,然后监听获取权限就OK了。
重复步骤。
然后得到一个www-data用户的权限,尝试提权,发现sudo -l返回的是

sudo: unable to resolve host BTRsys1sudo: no tty present and no askpass program specified

没见过这样的,先放在一边。但是可以查看配置文件,之前扫描出来一个config.php,但是访问没有任何信息,这里可以cat一下源码。

数据库root用户的密码是toor

连接数据库前,先优化一下终端,因为数据库输入密码时,是读取键盘记录的,而shell是无法完成的,所以还是先进行优化一下终端。
然后进入数据库,进行遍历,查看到用户名密码,尝试提权su - root
使用密码asd123***

m0re

最后得到flag。

二、综合环境——较高难度

这个其他没什么可记录的,就一点——内核提权

searchsploit ubuntu 4.4.0

m0re

复制到桌面进行编译,

root@kali:~/Desktop# gcc 41458.c -o rootshellroot@kali:~/Desktop# ls41458.c  rootshell

然后利用meterpreter的upload命令将rootshell上传并加权,进行chmod命令时,需要在反弹shell中执行,

赋予rootshell以777权限后执行文件就可以提权成功了。

./rootshell

总结

涉及知识点:代码审计、fuzz测试、万能密码、文件上传、弱口令、内核提权

CTF靶场系列就算完工了,还要继续努力鸭。

转载地址:https://blog.csdn.net/qq_45836474/article/details/108091321 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2020强网杯部分题目复现
下一篇:WebGoat靶场搭建及通关记录(一)

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年05月01日 18时25分58秒