美文网首页
XCTF高校战“疫”网络安全分享赛 WP

XCTF高校战“疫”网络安全分享赛 WP

作者: Du1in9 | 来源:发表于2020-03-10 22:14 被阅读0次

MISC

0x01 简单MISC

托入winhex发现zip,提出来,爆破,解压,base64解密,flag{Th1s_is_FlaG_you_aRE_rigHT}

0x02 武汉加油

解法一:

在kali用steghide发掘隐藏文件,steghide extract -sf 1.jpg

需要密码,爆破得到密码:ctf,提取出flag.txt

(爆破教程移步:https://www.jianshu.com/p/0629b5069431

程序中输入 ' 武 汉 加 油 ! 就得到了flag : {zhong_guo_jia_you}

解法二:

托入winhex发现是zip文件头,改后缀名,解压是exe,查壳,vmp壳

运行exe,打开CE,找到关键代码,我们输入的字符存入了edx

来到对应汇编代码,比较edx和eax,若相等则返回flag

在内存里看eax存了啥,中间有4个宽字符,在线转换unicode发现不对

CEE4,BABA,BCD3,D3CD转十进制,再GBK转字符得到 武汉加油 4个字符

程序中输入 ' 武 汉 加 油 ! 就得到了flag : {zhong_guo_jia_you}

0x03 隐藏的信息

一张二维码.jpg,一个纯数字.zip,二维码补全扫描不是flag,压缩包伪加密解压,音频文件拖入audacity,最后有拨号音,猜测拨号音隐写,运行dtmf解密脚本得到:187485618521

再根据jpg里的提示“USEBASE64...TOGETYOURFLAG”,base64加密得到flag{MTg3NDg1NjE4NTIx}

0x04 ez_mem&usb

captured.pcap,用foremost分解得到zip,用7zip解压得到data.vmem

(因为博主各种原因用不了volatility这个工具,以下为复现内容)

volatility -f data.vmem imageinfo,查看系统版本,是WinXPSP2x86的系统

volatility -f data.vmem --profile=WinXPSP2x86 filescan | grep flag,搜索字符串,发现flag.img

volatility -f data.img --profifile=WinXPSP2x86 dumpfifiles -Q 0x0000000001155f90 --dump

dir=./,将文件dump出来,打开目录发现usbdata.zip加密文件

volatility -f data.img --profifile=WinXPSP2x86 cmdscan,发现“passwd:weak_auth_top100”

解压得到usbdata.txt,键盘数据包,运行转换脚本

得到FLAG{69200835784EC3ED8D2A64E73FE913C0}

RE

0x01 fxck!

拖入ida进入main函数,看到D48和A7A两个处理函数

进入D48,发现为base58加密

再由下面for循环的异或运算,得到码表:

ABCDEFGHJKLMNPQRSTUVWXYZ123456789abcdefghijkmnopqrstuvwxyz

进入A7A,发现为brainfuck解释器,对应下表:

0xa8 <

0xa9 >

0xc4 +

0xc5 -

0x01 .

0xdd [

0xfd ]

被比较的数组如下,把brainfuck指令提取,还原得到

-[--->+<]>--.+[--->++<]>-.-[->++<]>-.----------.+[->++++++<]>..+++++++.[----->+++<]>.++++++++++.+[-

>+++<]>..--[----->+++<]>.[--->+<]>-----..--------.>-[--->+<]>---.+.-[-->+++<]>-.---[->+++<]>+.++[----->+<]>.-

[--->+<]>+.-----.>+[--->++<]>.++++++++++++.[--->+<]>++..[++>---<]>--.+[--->++++

<]>.++++++++++++.++[------>+<]>.++++++.+++++++++++.--.[->+++<]>+.+[----->+<]>+.---[->+++

<]>-.++++++++++++++.--[->+++<]>-.[-->+++<]>--.+[----->+<]>.++[->+++++<]>.[->+++<]>.[--->+<]>-----.--

----------.+[--->+<]>++.-[->+++++<]>.[--->+<]>+.+++++.---------.---[->+++<]>.----------.-----.-.+++++[->++

<]>+.-[-->+<]>--.-.>-[--->+<]>--.-.++++++++.

利用反编译脚本得到逻辑,逆写算法得到S7kaLLSeoPPbqqiRSzfHniVbxx2DPcitrWyaoFgHrVmaxSrwnA721m43SRZ

再经base58解码后得到:flag{63510cf7-2b80-45e1-a186-21234897e5cd}

MOBILE

GetFlag

应该是个正常的apk

安装到手机,有一个按钮,不知道干嘛的

扔到JEB里分析,发现提示存在远程的APK

那么这APK应该是会有一个监听端口的功能,远程IP在哪呢?翻到assert文件夹下可以看到secret.txt,内容是一段base64,解码后:The IP of the remote phone is 212.64.66.177

nmap扫一下这个IP的端口:nmap 212.64.66.177 ,发现8080这个端口是开着的

连上:nc 212.64.66.177 8080 ,返回一个数,每次都变,不知道干什么的

继续分析代码,在onCreate函数中可以看到利用了openFileOutput这个API新建了一个文件,这个文件会保存在应用的私有目录:/data/data/com.xuanxuan.getflag/files/flag

然后分析点击事件,进而分析ServerSocket_thread线程,发现是监听的本地的8080端口

继续分析Receive_Thread线程,知道连接到这个端口发送的是一个随机数

继续分析,发现最多能读取接收的500个字节,然后收到数据和刚才生成的随机数会被送到

Checkpayload函数里

跟进,数据转成JSON对象,对象里有两个字段,分别为message和check,然后会用传进来的随机数作为HMAC的key,算出message的校验码和check进行比较,如果通过,则过滤一些message的参数,利用JAVA的Runtime类执行wget拼接后面提交message

然后根据开始的随机数计算校验码

然后在服务器上监听相应端口,得到XCTF{this_wget_is_from_termux_and_I_move_some_dynamic_lib_to_systemlib_to_run_it }

相关文章

网友评论

      本文标题:XCTF高校战“疫”网络安全分享赛 WP

      本文链接:https://www.haomeiwen.com/subject/gspgdhtx.html