diff --git a/README.md b/README.md index fe7ec24..b545126 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ - [6.2.2 re ECTF2016 tayy](doc/6.2.2_re_ectf2016_tayy.md) - [6.2.3 re Codegate2017 angrybird](doc/6.2.3_re_codegate2017_angrybird.md) - [6.2.4 re CSAWCTF2015 wyvern](doc/6.2.4_re_csawctf2015_wyvern.md) + - [6.2.5 re PicoCTF2014 Baleful](doc/6.2.5_re_picoctf2014_baleful.md) - [七、附录](doc/7_appendix.md) - [7.1 更多 Linux 工具](doc/7.1_Linuxtools.md) diff --git a/SUMMARY.md b/SUMMARY.md index 4d4c08b..dfd0194 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -83,6 +83,7 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One * [6.2.2 re ECTF2016 tayy](doc/6.2.2_re_ectf2016_tayy.md) * [6.2.3 re Codegate2017 angrybird](doc/6.2.3_re_codegate2017_angrybird.md) * [6.2.4 re CSAWCTF2015 wyvern](doc/6.2.4_re_csawctf2015_wyvern.md) + * [6.2.5 re PicoCTF2014 Baleful](doc/6.2.5_re_picoctf2014_baleful.md) * [七、附录](doc/7_appendix.md) * [7.1 更多 Linux 工具](doc/7.1_Linuxtools.md) * [7.2 更多 Windows 工具](doc/7.2_wintools.md) diff --git a/doc/5.2_pin.md b/doc/5.2_pin.md index cdafb55..8522efa 100644 --- a/doc/5.2_pin.md +++ b/doc/5.2_pin.md @@ -419,11 +419,6 @@ Count 152786 - [pintool2](https://github.com/sebastiendamaye/pintool2) - [Pin 3.5 User Guide](https://software.intel.com/sites/landingpage/pintool/docs/97503/Pin/html/) -#### 练习 -- [**RE** - picoCTF 2014 - Baleful](../src/Reverse/5.2_baleful) -- [**RE** - Hack You 2014 - reverse - 400](../src/Reverse/5.2_reverse_400) -- [**RE** - th3jackers CTF 2015 - rev100 - 100](../src/Reverse/5.2_th3jackers_100) - ## 扩展:Triton Triton 是一个二进制执行框架,其具有两个重要的优点,一是可以使用 Python 调用 Pin,二是支持符号执行。[官网](https://triton.quarkslab.com/) diff --git a/doc/6.1.1_pwn_hctf2016_brop.md b/doc/6.1.1_pwn_hctf2016_brop.md index 23c6b3d..ad08f35 100644 --- a/doc/6.1.1_pwn_hctf2016_brop.md +++ b/doc/6.1.1_pwn_hctf2016_brop.md @@ -6,6 +6,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.1.1_pwn_hctf2016_brop) + ## 题目复现 出题人在 github 上开源了代码,[出题人失踪了](https://github.com/zh-explorer/hctf2016-brop)。如下: ```C @@ -368,7 +370,7 @@ firmy ## Exploit -完整的 exp 如下,其他文件放在了[github](../src/writeup/6.1.1_pwn_hctf2016_brop)相应文件夹中: +完整的 exp 如下: ```python from pwn import * diff --git a/doc/6.1.2_pwn_njctf2017_pingme.md b/doc/6.1.2_pwn_njctf2017_pingme.md index 7a095cc..c9802c5 100644 --- a/doc/6.1.2_pwn_njctf2017_pingme.md +++ b/doc/6.1.2_pwn_njctf2017_pingme.md @@ -6,6 +6,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.1.2_pwn_njctf2017_pingme) + ## 题目复现 在 6.1.1 中我们看到了 blind ROP,这一节中则将看到 blind fmt。它们的共同点是都没有二进制文件,只提供 ip 和端口。 @@ -200,7 +202,7 @@ firmy ## Exploit -完整的 exp 如下,其他文件放在了[github](../src/writeup/6.1.2_pwn_njctf2017_pingme)相应文件夹中: +完整的 exp 如下: ```python from pwn import * diff --git a/doc/6.1.3_pwn_xdctf2015_pwn200.md b/doc/6.1.3_pwn_xdctf2015_pwn200.md index 2820e16..1cdeea3 100644 --- a/doc/6.1.3_pwn_xdctf2015_pwn200.md +++ b/doc/6.1.3_pwn_xdctf2015_pwn200.md @@ -6,6 +6,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.1.3_pwn_xdctf2015_pwn200) + ## 题目复现 出题人在博客里贴出了源码,如下: ```C @@ -941,7 +943,7 @@ firmy ## Exploit -完整的 exp 如下,其他文件放在了[github](../src/writeup/6.1.3_pwn_xdctf2015_pwn200)相应文件夹中: +完整的 exp 如下: ```python from pwn import * diff --git a/doc/6.1.4_pwn_backdoorctf2017_fun_signals.md b/doc/6.1.4_pwn_backdoorctf2017_fun_signals.md index a946419..9275c70 100644 --- a/doc/6.1.4_pwn_backdoorctf2017_fun_signals.md +++ b/doc/6.1.4_pwn_backdoorctf2017_fun_signals.md @@ -9,6 +9,8 @@ - [参考资料](#参考资料) + [下载文件](../src/writeup/6.1.4_pwn_backdoorctf2017_fun_signals) + ## SROP 原理 #### Linux 系统调用 在开始这一切之前,我想先讲一下 Linux 的系统调用。64 位和 32 位的系统调用表分别在 @@ -252,8 +254,6 @@ fake_flag_here_as_original_is_at_server\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ ``` 如果连接的是远程服务器,`fake_flag_here_as_original_is_at_server` 会被替换成真正的 flag。 -其他文件放在了 [github](../src/writeup/6.1.4_pwn_backdoorctf2017_fun_signals) 相应文件夹中。 - 这一节我们详细介绍了 SROP 的原理,并展示了一个简单的例子,在后面的章节中,会展示其更复杂的运用,包扩结合 vDSO 的用法。 diff --git a/doc/6.1.5_pwn_grehackctf2017_beerfighter.md b/doc/6.1.5_pwn_grehackctf2017_beerfighter.md index 4c02bad..639446f 100644 --- a/doc/6.1.5_pwn_grehackctf2017_beerfighter.md +++ b/doc/6.1.5_pwn_grehackctf2017_beerfighter.md @@ -4,6 +4,8 @@ - [Exploit](#exploit) +[下载文件](../src/writeup/6.1.5_pwn_grehackctf2017_beerfighter) + ## 题目解析 ``` $ file game @@ -118,7 +120,7 @@ firmy ## Exploit -完整的 exp 如下,其他文件放在了[github](../src/writeup/6.1.5_pwn_grehackctf2017_beerfighter)相应文件夹中: +完整的 exp 如下: ```python from pwn import * diff --git a/doc/6.1.6_pwn_defconctf2015_fuckup.md b/doc/6.1.6_pwn_defconctf2015_fuckup.md index 3482e43..08cc365 100644 --- a/doc/6.1.6_pwn_defconctf2015_fuckup.md +++ b/doc/6.1.6_pwn_defconctf2015_fuckup.md @@ -6,8 +6,9 @@ - [参考资料](#参考资料) -## ret2vdso 原理 +[下载文件](../src/writeup/6.1.6_pwn_defconctf2015_fuckup) +## ret2vdso 原理 在你使用 `ldd` 命令时,通常会显示出 vDSO,如下: ``` $ ldd /usr/bin/ls @@ -29,7 +30,7 @@ No RELRO No canary found NX enabled No PIE No RPATH No RU ``` ## Exploit -完整的 exp 如下,其他文件放在了[github](../src/writeup/6.1.6_pwn_defconctf2015_fuckup)相应文件夹中: +完整的 exp 如下: ## 参考资料 - `man vdso` diff --git a/doc/6.1.7_pwn_0ctf2015_freenote.md b/doc/6.1.7_pwn_0ctf2015_freenote.md index 272a3a9..b0223f4 100644 --- a/doc/6.1.7_pwn_0ctf2015_freenote.md +++ b/doc/6.1.7_pwn_0ctf2015_freenote.md @@ -1 +1,4 @@ # 6.1.7 pwn 0CTF2015 freenote + + +[下载文件](../src/writeup/6.1.7_pwn_0ctf2015_freenote) diff --git a/doc/6.2.1_re_xhpctf2017_dont_panic.md b/doc/6.2.1_re_xhpctf2017_dont_panic.md index 4e75ec4..6c778e5 100644 --- a/doc/6.2.1_re_xhpctf2017_dont_panic.md +++ b/doc/6.2.1_re_xhpctf2017_dont_panic.md @@ -4,6 +4,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.2.1_re_xhpctf2017_dont_panic) + ## 题目解析 第一步当然是 file 啦: ``` @@ -423,8 +425,6 @@ print("".join(flag)) 在最后一篇参考资料里,介绍了怎样还原 Go 二进制文件的函数名,这将大大简化我们的分析。 -另外所有文件放在了[github](../src/writeup/6.2.1_re_xhpctf2017_dont_panic)相应文件夹中。 - ## 参考资料 - [Pin Tutorial](http://www.ic.unicamp.br/~rodolfo/mo801/04-PinTutorial.pdf) diff --git a/doc/6.2.2_re_ectf2016_tayy.md b/doc/6.2.2_re_ectf2016_tayy.md index fc84201..350c597 100644 --- a/doc/6.2.2_re_ectf2016_tayy.md +++ b/doc/6.2.2_re_ectf2016_tayy.md @@ -6,6 +6,8 @@ 章节 4.5 中讲解了 Z3 约束求解器的基本使用方法,通过这一题,我们可以更进一步地熟悉它。 +[下载文件](../src/writeup/6.2.2_re_ectf2016_tayy) + ## 题目解析 ``` Tayy is the future of AI. She is a next level chatbot developed by pro h4ckers at NIA Labs. But Tayy hides a flag. Can you convince her to give it you? @@ -235,7 +237,5 @@ void giff_flag(&flag, int key) { ``` 我们知道 flag 的格式应该是 `ECTF{...}`,所以只要初始 flag 在多次转换后出现这几个字符,就很可能是最终的 flag 了。我们已经理清了算法,接下来的事情就交给 Z3 了。 -完整的 exp 如下,其他文件在 [github](../src/writeup/6.2.2_re_ectf2016_tayy) 相应文件夹中。 - ## 参考资料 diff --git a/doc/6.2.3_re_codegate2017_angrybird.md b/doc/6.2.3_re_codegate2017_angrybird.md index cb88793..2fd291e 100644 --- a/doc/6.2.3_re_codegate2017_angrybird.md +++ b/doc/6.2.3_re_codegate2017_angrybird.md @@ -4,6 +4,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.2.3_re_codegate2017_angrybird) + ## 题目解析 看题目就知道,这是一个会让我们抓狂的程序,事实也确实如此。 ``` @@ -262,7 +264,5 @@ you typed : Im_so_cute&pretty_:) ``` 同样需要一定的运气才能通过,祝好运:) -所有文件在 [github](../src/writeup/6.2.3_re_codegate2017_angrybird) 相应文件夹中。 - ## 参考资料 diff --git a/doc/6.2.4_re_csawctf2015_wyvern.md b/doc/6.2.4_re_csawctf2015_wyvern.md index bc248d0..12f6d12 100644 --- a/doc/6.2.4_re_csawctf2015_wyvern.md +++ b/doc/6.2.4_re_csawctf2015_wyvern.md @@ -4,6 +4,8 @@ - [参考资料](#参考资料) +[下载文件](../src/writeup/6.2.4_re_csawctf2015_wyvern) + ## 题目解析 ``` $ file wyvern diff --git a/doc/6.2.5_re_picoctf2014_baleful.md b/doc/6.2.5_re_picoctf2014_baleful.md new file mode 100644 index 0000000..f5a8d7f --- /dev/null +++ b/doc/6.2.5_re_picoctf2014_baleful.md @@ -0,0 +1,39 @@ +# 6.2.5 re PicoCTF2014 Baleful + +- [题目解析](#题目解析) +- [参考资料](#参考资料) + + +[下载文件](../src/writeup/6.2.5_re_picoctf2014_baleful) + +## 题目解析 +``` +$ file baleful +baleful: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped +$ strings baleful | grep -i upx +@UPX! +$Info: This file is packed with the UPX executable packer http://upx.sf.net $ +$Id: UPX 3.91 Copyright (C) 1996-2013 the UPX Team. All Rights Reserved. $ +UPX!u +UPX! +UPX! +$ upx -d baleful -o baleful_de + Ultimate Packer for eXecutables + Copyright (C) 1996 - 2017 +UPX 3.94 Markus Oberhumer, Laszlo Molnar & John Reiser May 12th 2017 + + File size Ratio Format Name + -------------------- ------ ----------- ----------- + 144956 <- 6752 4.66% linux/i386 baleful_de + +Unpacked 1 file. +$ file baleful_de +baleful_de: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=35d1a373cbe6a675ecbbc904722a86f853f20ce3, stripped +``` +``` +$ ./baleful_de +Please enter your password: ABCD +Sorry, wrong password! +``` + +## 参考资料 diff --git a/doc/6_writeup.md b/doc/6_writeup.md index d21c948..624d182 100644 --- a/doc/6_writeup.md +++ b/doc/6_writeup.md @@ -13,3 +13,4 @@ - [6.2.2 re ECTF2016 tayy](6.2.2_re_ectf2016_tayy.md) - [6.2.3 re Codegate2017 angrybird](6.2.3_re_codegate2017_angrybird.md) - [6.2.4 re CSAWCTF2015 wyvern](6.2.4_re_csawctf2015_wyvern.md) + - [6.2.5 re PicoCTF2014 Baleful](6.2.5_re_picoctf2014_baleful.md) diff --git a/doc/7.4_writeup.md b/doc/7.4_writeup.md index 7ee9ce7..94baf07 100644 --- a/doc/7.4_writeup.md +++ b/doc/7.4_writeup.md @@ -5,14 +5,6 @@ #### **pwn** - UIUCTF 2017 - goodluck - 200 -## 5.2 Pin 动态二进制插桩 -#### **RE** - picoCTF 2014 - Baleful - -#### **RE** - Hack You 2014 - reverse - 400 - -#### **RE** - th3jackers CTF 2015 - rev100 - 100 - - ## 6.1 更多 Linux 工具 #### Strings - strings_crackme ```text diff --git a/src/Reverse/5.2_reverse_400 b/src/Reverse/5.2_reverse_400 deleted file mode 100755 index fa00015..0000000 Binary files a/src/Reverse/5.2_reverse_400 and /dev/null differ diff --git a/src/Reverse/5.2_th3jackers_100 b/src/Reverse/5.2_th3jackers_100 deleted file mode 100755 index f07f1db..0000000 Binary files a/src/Reverse/5.2_th3jackers_100 and /dev/null differ diff --git a/src/writeup/6.2.5_re_picoctf2014_baleful/baleful b/src/writeup/6.2.5_re_picoctf2014_baleful/baleful new file mode 100755 index 0000000..0281f6e Binary files /dev/null and b/src/writeup/6.2.5_re_picoctf2014_baleful/baleful differ diff --git a/src/Reverse/5.2_baleful b/src/writeup/6.2.5_re_picoctf2014_baleful/baleful_de similarity index 100% rename from src/Reverse/5.2_baleful rename to src/writeup/6.2.5_re_picoctf2014_baleful/baleful_de