Adworld
本文章按心情随机更新任意题目,尽量一天一更
由于攻防世界题目会更新,导致有些题目会被删除或者难度会被更改
所以本篇文档的所有题目难度按本人做题的时候的难度算
上次更新时间为 2022-12-10 09:40,版本为:测试版v0.0.51
最新更新题目为:insanity (难度:3)
本教程仅供参考,请以实操为准
主顺序按难度,次顺序按发布题目的时间
跳转请使用Ctrl + f
有任何问题可以在评论区中留言
需要的工具或环境汇总
工具
名称 | 地址 |
---|---|
linux-kali | linux-kali 下载地址 |
python2.x | python2.x 下载地址 |
python3.7.x | python3.7.x 下载地址 |
Stegsolve(ss) | Stegsolve 下载地址 |
隐写工具(zsteg) | zsteg 安装方法 |
隐写工具(stegosaurus) | stegosaurus 下载地址 |
010 Editor | 010 Editor 下载链接 |
线上工具
名称 | 地址 |
---|---|
在线工具站 | 在线工具站 |
在线工具-培根密码 | 在线工具-培根密码 |
在线工具-凯撒密码 | 在线工具-凯撒密码 |
在线工具-hex16转字符串 | 在线工具-hex16转字符串 |
在线工具-Brainfuck | 在线工具-Brainfuck |
在线工具-pyc反编译 | 在线工具-pyc反编译 |
在线工具-python2 | 在线工具-python2 |
在线工具-python3 | 在线工具-python2 |
在线工具-二维码解码器 | 在线工具-二维码解码器 |
所需环境
windows | |
---|---|
环境名 | 安装方式 |
linux | |
---|---|
环境名 | 安装方式 |
点击查看开发记录
如有错误和遗漏还请联系我修改。
开发记录
2022-12-06 16:30:38:版本:测试版v0.0.51
- 更新版本为:v0.0.51
- 更新题目材料栏目的排版
- 更新题目排版顺序(已有的题目排版不做变化,新增题目按照发布解题思路的时间排序)
2022-11-06 22:44:08:版本:测试版v0.0.50
- 所需工具汇总
2022-10-31 23:55:25:版本:测试版v0.0.50
- 新增题目更新记录模块
2022-10-30 23:41:50:发布测试版v0.0.50
- 创建文章
Adworld
- 创建
Misc
、Pwn
、Web
、Reverse
、Crypto
、Mobile
模块框架
点击查看题目更新记录
更新记录
2022-12-06:更新 2 题
2022-11-07:更新 1 题
2022-11-06:更新 4 题
2022-11-05:更新 1 题
2022-11-03:更新 2 题
2022-11-02:更新 2 题
2022-11-01:更新 3 题
2022-10-31:更新 1 题
Misc
[简单] 凯撒大帝在培根里藏了什么 (难度:1)
下载解压,里面有一个 flag.txt ,打开后发现全是 ABAB ,提交发现失败。
想想题目暗示:凯撒(加密)大帝在培根(加密)里藏了什么,说明这个 flag
至少用了两种加密方式:凯撒密码
和 培根密码
凯撒密码即循环移位密码,其公式为
加密: En(x) = (x + n) mod 26
解密: Dn(x) = (x - n) mod 26
具体可以查看关于凯撒密码的百度百科 => 跳转链接
培根密码加密方式有两种:
第一种:26位加密
a | AAAAA | h | AABBB | o | ABBBA | v | BABAB |
---|---|---|---|---|---|---|---|
b | AAAAB | i | ABAAA | p | ABBBB | w | BABBA |
c | AAABA | j | ABAAB | q | BAAAA | x | BABBB |
d | AAABB | k | ABABA | r | BAAAB | y | BBAAA |
e | AABAA | l | ABABB | s | BAABA | z | BBAAB |
f | AABAB | m | ABBAA | t | BAABB | ||
g | AABBA | n | ABBAB | u | BABAA |
第二种:24位加密
a | AAAAA | h | AABBB | p | ABBBA | x | BABAB |
---|---|---|---|---|---|---|---|
b | AAAAB | i/j | ABAAA | q | ABBBB | y | BABBA |
c | AAABA | k | ABAAB | r | BAAAA | z | BABBB |
d | AAABB | l | ABABA | s | BAAAB | ||
e | AABAA | m | ABABB | t | BAABA | ||
f | AABAB | n | ABBAA | u/v | BAABB | ||
g | AABBA | o | ABBAB | w | BABAA |
加密者需使用两种不同字体,分别代表A和B。准备好一篇包含相同AB字数的假信息后,按照密文格式化假信息,即依密文中每个字母是A还是B分别套用两种字体。
解密时,将上述方法倒转。所有字体一转回A,字体二转回B,以后再按上表拼回字母。
法兰西斯·培根另外准备了一种方法,其将大小写分别看作A与B,可用于无法使用不同字体的场合(例如只能处理纯文本时)。但这样比起字体不同更容易被看出来,而且和语言对大小写的要求也不太兼容。
培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。
具体可以查看关于培根密码的百度百科 => 跳转链接
知道了加密方式,就可以使用在线工具-培根密码
解密出一个字符串 NGBKLATCOZNIXEVZU
然后使用在线工具-凯撒密码
密钥 0~25
,试出当 key=6
时解密 或 key=20
时加密,能解出一个有语义的原文 havefunwithcrypto
。
然后发现要求要大写,可以使用 f12 打开网页调式工具,在 控制台
中输入:
1 | "havefunwithcrypto".toUpperCase(); |
即可得到大写 flag
,格式为:flag{XXX}
[简单] 简单的base编码 (难度:1)
来自银河的信号 (难度:1)
steg没有py (难度:1)
时间刺客! (难度:1)
看雪看雪看雪 (难度:1)
流量分析2 (难度:1)
nice_bgm (难度:1)
fakezip (难度:1)
Check (难度:1)
Wire1 (难度:1)
Encode (难度:1)
1-misc (难度:1)
碎纸机11 (难度:1)
Let_god_knows (难度:1)
misc2-1 (难度:1)
pcap1 (难度:1)
running (难度:1)
流量分析1 (难度:1)
津门杯2021-m1 (难度:1)
m0_01 (难度:1)
miss_01 (难度:1)
pcap1 (难度:1)
Ditf (难度:1)
QAQ..正在分析中
a_good_idea (难度:1)
Aesop_secret (难度:1)
normal_png (难度:1)
glance-50 (难度:1)
hit-the-core (难度:1)
下载解压材料后得到一个后缀为 .core
的文件,拖到 kali
用 string
输出一下发现不行,有好多干扰项,分隔 flag
也不行,于是只能分隔 {
1 | strings 8deb5f0c2cd84143807b6175f58d6f3f.core | grep { |
发现可以得到以下字符串
1 | cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv} |
通过观察可以发现每隔4个就有一个大写字母,按照这个规律写一个 py
脚本
1 | import re |
输出 flag
格式为:ALEXCTF{xxx..}
reverseMe (难度:1)
misc_pic_again (难度:1)
hong (难度:1)
Test-flag-please-ignore (难度:1)
下载解压,得到一个没后缀的文件 misc10
用记事本打开,得到一个字符串
通过观察字符串(都是 0~9,a~f
以内的字符)判断可能和 hex(16进制
) 有关,可以用 在线工具-hex16转字符串,转成字符串
就可得到 flag
格式为:flag{xxx}
János-the-Ripper (难度:1)
Erik-Baleog-and-Olaf (难度:1)
can_has_stdio? (难度:1)
Training-Stegano-1 (难度:1)
simple_transfer (难度:1)
2017_Dating_in_Singapore (难度:1)
pure_color (难度:1)
心仪的公司 (难度:1)
适合作为桌面 (难度:1)
Banmabanma (难度:1)
Become_a_Rockstar (难度:2)
倒立屋 (难度:2)
halo (难度:2)
打野 (难度:2)
得到一张图片,因为是 bmp
格式的,所以改个名(我改成 dy.bmp
)扔进 kali
中执行 zsteg
一下看看
如果报错: zsteg: command not found
,说明没安装,可以参考文档 => 安装zsteg,或者看以下我写的教程
kali安装zsteg参考教程
逐行执行代码(如果是注释可以不用)
国内国外下载二选一
1 | git clone https://github.com/zed-0xff/zsteg |
报错 Failed to connect to github.com port 443:connection timed out
解决方法 => 参考文档,或者看以下我写的教程
1 | # 第一步:设置全局代理 |
查看是否成功
1 | zsteg -h |
如果帮助可以出来就说明安装完成,可以正常使用
在保证 zsteg
可以正常使用的情况下执行以下命令
1 | zsteg dy.bmp |
得到以下结果,其中 flag
格式为:qwxf{xxx..}
1 | [?] 2 bytes of extra data after image end (IEND), offset = 0x269b0e |
something_in_image (难度:2)
flag_universe (难度:2)
base64÷4 (难度:2)
funny_video (难度:2)
red_green (难度:2)
this_is_flag (难度:2)
Just-No-One (难度:2)
intoU (难度:2)
我们的秘密是绿色的 (难度:2)
QAQ..正在分析中
3-11 (难度:2)
2-1 (难度:2)
Get-the-key.txt (难度:2)
QAQ..正在分析中
MISCall (难度:2)
下载了一个没后缀的文件,不知道是啥,拉到 kali
里面康康
1 | # 查看文件类型 |
发现是 bz2 压缩包,进行解压
1 | # 解压 |
解压出来一个 ctf
文件夹,进入文件夹发现有一个假的 flag
文件 flag.txt
1 | # 进入 ctf 文件夹 |
查看是否有隐藏文件,发现有一个 .git
,查看一下 git
记录并校验列表中存储的文件,发现了一个 s.py
的文件
1 | # 查看隐藏文件 |
恢复 s.py
文件,然后用 python
执行后(注意是 python2
的语法,使用 python3
需要修改部分内容)即可得到 flag
1 | # 恢复文件 |
embarrass (难度:2)
下载解压文件,发现是 pcapng
后缀的,直接丢 kali
里面看看
发现是小鲨鱼(Wireshark)的文件,双击打开
ctrl + f
在跳出的搜索框中:
英文版:第一个下拉栏选 Packet bytes
,第三个下拉栏选 string
搜索 flag
点击 find
,多点几次直到找到 flag
,格式看下边
中文版:第一个下拉栏选 分组字节流
,第三个下拉栏选 字符串
搜索 flag
点击 查找
,多点几次直到找到 flag
,格式看下边
也可以用以下方法(在 kali
里执行):
1 | strings misc_02.pcapng | grep flag |
找到
flag
格式为 flag{Go od..xxx..}
再见李华 (难度:2)
就在其中 (难度:2)
QAQ..正在分析中
很普通的Disco (难度:2)
很普通的数独 (难度:2)
What-is-this (难度:2)
QAQ..正在分析中
Recover-Deleted-File (难度:2)
Hidden-Message (难度:2)
Hear-with-your-Eyes (难度:2)
Miscellaneous-200 (难度:2)
stage1 (难度:2)
题目来源:XCTF
题目描述:暂无
题目材料:点我获取
题目链接:点我跳转
可选工具:Stegsolve
、微信扫码
、在线工具-二维码解码器
、010 Editor
、Kali Linux
、Python
、在线工具-pyc反编译
、在线工具-python2
下载得到一个 png
图片
扔进 ss(Stegsolve)=> ss下载链接
点击 file
打开文文件,点击下方按钮,即可得到一个二维码,随便找一张,不能用就换一张
可以使用微信扫码也可以使用在线二维码解码器 => 在线工具-二维码解码器
扫描成功后得到一串数字,新建 txt
文件存放这串数字,使用 010 Editor 工具转换 => 010 Editor 下载链接
导入到 010editor(双击打开 => 文件 => 导入十六进制 => 保存)得到一个没有后缀的文件(我命名为 stage1
),不知道是什么文件,扔到 kali
中查看是什么文件
1 | file stage1 |
输出 stage1: python 2.7 byte-compiled
,说明是 python2.7
的编译文件 pyc
,需要进行反编译
将无后缀名文件 stage1
手动改为 stage1.pyc
扔进在线反编译工具进行编译 => 在线工具-pyc反编译
编译后得到源码,如果是 python3
需要修改部分内容(- 表示删除该行,+ 表示添加该行,-和+不需要写)
1 | - print flag |
python2
没有语法问题扔进 python2在线工具
=> 在线工具-python2 运行,或者自己电脑上有装 python2
可以直接运行,发现没有结果输出
查看源码,发现是个自定义函数,所以还需要调用,在最后一行加入调用
1 | + flag() |
运行 python
文件得到 flag
easycap (难度:2)
QAQ..正在分析中
4-2 (难度:2)
Excaliflag (难度:2)
Cephalopod (难度:2)
小小的PDF (难度:2)
神奇的Modbus (难度:2)
下载文件,发现是 pcapng
后缀的,直接丢 kali
里面看看
发现是小鲨鱼(Wireshark)的文件,双击打开
题目很明确的告诉我们了寻找 flag
,直接找:
工业设备消息传输使用modbus协议。所以我就采集了modbus的通信数据包。在这些数据传输中存在着flag。接替思路是这样的,利用该modbus读取设备的相关数据。首先读取数据的话modbus 有01,02,03,04功能码,01是读取线圈状态:取得一组逻辑线圈的当前状态(ON/OFF ),02是读取输入状态:取得一组开关输入的当前状态(ON/OFF),03是读取保持寄存器:在一个或多个保持寄存器中取得当前的二进制值,04读取输入寄存器:在一个或多个输入寄存器中取得当前的二进制
wireshark输入modbus过滤追踪tcp流:tcp.stream eq 4
英文版:Analyze => Follow => tcp stream
中文版:分析 => 追踪流 => tcp流
找到 tcf.{E.a…}
得到 flag 格式为 xtcf{Ea…}
misc1 (难度:2)
low (难度:2)
[中等] QR1 (难度:3)
[中等] Lottery彩票 (难度:3)
Misc文件类型 (难度:3)
信号不好先挂了 (难度:3)
saleae (难度:3)
Keyes_secret (难度:3)
隐藏的信息 (难度:3)
奇怪的TTL字段 (难度:3)
miscmisc (难度:3)
打开电动车 (难度:3)
如来十三掌 (难度:3)
pdf (难度:3)
签到题 (难度:3)
QAQ..正在分析中
互相伤害!!! (难度:3)
传感器1 (难度:3)
warmup (难度:3)
Miscellaneous-300 (难度:3)
challenge_how_many_Vigenère (难度:3)
latlong (难度:3)
5-1 (难度:3)
4-1 (难度:3)
3-1 (难度:3)
肥宅快乐题 (难度:3)
Py-Py-Py (难度:3)
下载得到 python
的 pyc
包,用网页工具 在线工具-pyc反编译 进行反编译
得到 python
代码
1 | # uncompyle6 version 3.5.0 |
改写此代码并输出 fllag
1 | # uncompyle6 version 3.5.0 |
报错
1 | Traceback (most recent call last): |
可能是 python2
的语法在 python3
中废弃了,所以使用 python2
=> python2在线编译,发现输出说是隐写 => The challenge is Steganography
参考文档 => Stegosaurus
下载地址 => Stegosaurus
使用 kali
运行 stegosaurus
破译隐写(建议使用python3.7.x或以下版本,3.10.x以上不支持)
1 | python3 stegosaurus.py -x 58cadd8d8269455ebc94690fd777c34a.pyc |
解得 flag
格式为
1 | Extracted payload: flag{xxx} |
Time_losing (难度:4)
crc (难度:4)
Disk (难度:4)
ewm (难度:4)
双色块 (难度:4)
掀桌子 (难度:4)
gif (难度:4)
QAQ..正在分析中
坚持60s (难度:4)
stegano (难度:4)
give_you_flag (难度:4)
mysql (难度:4)
message (难度:4)
qr-easy (难度:4)
Avatar (难度:4)
test.pyc (难度:4)
picture2 (难度:4)
Keyword (难度:4)
Pwn
empty (难度:2)
empty (难度:3)
Web
empty (难度:1)
empty (难度:2)
empty (难度:3)
empty (难度:4)
Reverse
open-source (难度:3)
下载打开文件 8b6405c25fe447fa804c6833a0d72808.c
查看代码,看到好几个条件判断,分析需求
1 | if (argc != 4) { |
说明 argc
要为 4
,否则就退出程序,那 argc = 4
1 | if (first != 0xcafe) { |
说明 first
要等于 0xcafe
,否则就退出程序,那 firse = 0xcafe
1 | if (second % 5 == 3 || second % 17 != 8) { |
说明 second
要满足 second % 5 == 3
和 second % 17 != 8
其中一个,否则就退出程序,
当 second = 25
时 25 % 5 == 3
为 false
,25 % 17 != 8
为 false
,false || false
结果为 false
,那 second = 25
1 | if (strcmp("h4cky0u", argv[3])) { |
strcmp(value1, value)
当 value1 == value2
时返回0,退出 if
条件,那 argv[3]="h4cky0u"
综上所述,代码修改为:
1 |
|
运行后就能得到 flag
insanity (难度:3)
下载文件 428f6e6f75754fca8964d35b16a4b709
不知道是什么文件,扔到 kali
里面看看
看起来像是个 Linux
的可执行文件
用 file
命令查看一下
1 | file 428f6e6f75754fca8964d35b16a4b709 |
提权
1 | chmod +x 428f6e6f75754fca8964d35b16a4b709 |
执行
1 | ./428f6e6f75754fca8964d35b16a4b709 |
如果执行没出结果,可以使用字符串查找
1 | strings 428f6e6f75754fca8964d35b16a4b709 | grep flag |
即可出 flag,格式为: 9447{xxx}