mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-25 11:41:16 +07:00
del 4.1, merry christmas!
This commit is contained in:
parent
ca00ac14ce
commit
c26ae41075
@ -65,7 +65,7 @@
|
|||||||
- [3.6 Mobile](doc/3.6_mobile.md)
|
- [3.6 Mobile](doc/3.6_mobile.md)
|
||||||
|
|
||||||
- [四、技巧篇](doc/4_tips.md)
|
- [四、技巧篇](doc/4_tips.md)
|
||||||
- [4.1 AWD模式](doc/4.1_AWD.md)
|
- [4.1]()
|
||||||
- [4.2 Linux 命令行技巧](doc/4.2_Linux_terminal_tips.md)
|
- [4.2 Linux 命令行技巧](doc/4.2_Linux_terminal_tips.md)
|
||||||
- [4.3 GCC 编译参数解析](doc/4.3_gcc_arg.md)
|
- [4.3 GCC 编译参数解析](doc/4.3_gcc_arg.md)
|
||||||
- [4.4 GCC 堆栈保护技术](doc/4.4_gcc_sec.md)
|
- [4.4 GCC 堆栈保护技术](doc/4.4_gcc_sec.md)
|
||||||
|
@ -57,7 +57,7 @@ GitHub 地址:https://github.com/firmianay/CTF-All-In-One
|
|||||||
* [3.5 Misc](doc/3.5_misc.md)
|
* [3.5 Misc](doc/3.5_misc.md)
|
||||||
* [3.6 Mobile](doc/3.6_mobile.md)
|
* [3.6 Mobile](doc/3.6_mobile.md)
|
||||||
* [四、技巧篇](doc/4_tips.md)
|
* [四、技巧篇](doc/4_tips.md)
|
||||||
* [4.1 AWD模式](doc/4.1_AWD.md)
|
* [4.1]()
|
||||||
* [4.2 Linux 命令行技巧](doc/4.2_Linux_terminal_tips.md)
|
* [4.2 Linux 命令行技巧](doc/4.2_Linux_terminal_tips.md)
|
||||||
* [4.3 GCC 编译参数解析](doc/4.3_gcc_arg.md)
|
* [4.3 GCC 编译参数解析](doc/4.3_gcc_arg.md)
|
||||||
* [4.4 GCC 堆栈保护技术](doc/4.4_gcc_sec.md)
|
* [4.4 GCC 堆栈保护技术](doc/4.4_gcc_sec.md)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
- [题目类别](#题目类别)
|
- [题目类别](#题目类别)
|
||||||
- [高质量的比赛](#高质量的比赛)
|
- [高质量的比赛](#高质量的比赛)
|
||||||
- [竞赛小贴士](#竞赛小贴士)
|
- [竞赛小贴士](#竞赛小贴士)
|
||||||
|
- [线下赛 AWD 模式](#线下赛-awd-模式)
|
||||||
- [搭建 CTF 比赛平台](#搭建-ctf-比赛平台)
|
- [搭建 CTF 比赛平台](#搭建-ctf-比赛平台)
|
||||||
|
|
||||||
|
|
||||||
@ -91,6 +92,52 @@ CTF竞赛模式具体分为以下三类:
|
|||||||
- id0-rsa.pub
|
- id0-rsa.pub
|
||||||
|
|
||||||
|
|
||||||
|
## 线下赛 AWD 模式
|
||||||
|
Attack With Defence,简而言之就是你既是一个 hacker,又是一个 manager。
|
||||||
|
|
||||||
|
比赛形式:一般就是一个 ssh 对应一个服务,可能是 web 也可能是 pwn,然后 flag 五分钟一轮,各队一般都有自己的初始分数,flag 被拿会被拿走 flag 的队伍均分,主办方会对每个队伍的服务进行 check,check 不过就扣分,扣除的分值由服务 check 正常的队伍均分。
|
||||||
|
|
||||||
|
#### 怎样拿到 flag
|
||||||
|
1. web 主要是向目标服务器发送 http 请求,返回 flag
|
||||||
|
2. bin 主要是通过 exploit 脚本读取 `/home/username` 下某个文件夹下的 flag 文件
|
||||||
|
|
||||||
|
#### Web 题目类型
|
||||||
|
1. 出题人自己写的 CMS 或者魔改后的 CMS(注意最新漏洞、1day 漏洞等)
|
||||||
|
2. 常见(比如 `Wordpress` 博客啊、`Discuz!` 论坛啊)或者不常见 CMS 等
|
||||||
|
3. 框架型漏洞(CI等)
|
||||||
|
|
||||||
|
- [如何在 CTF 中当搅屎棍](http://www.mamicode.com/info-detail-1590551.html)
|
||||||
|
- [AWD 模式生存技巧](http://bobao.360.cn/ctf/detail/169.html)
|
||||||
|
- 能力:
|
||||||
|
- 漏洞反应能力
|
||||||
|
- 快速编写脚本
|
||||||
|
- web代码审计
|
||||||
|
- 心态放好,因为 web 比较容易抓取流量,所以即使我们被打,我们也可以及时通过分析流量去查看别的队伍的 payload,从而进行反打。
|
||||||
|
- 脚本准备:一句话,文件包含,不死马、禁止文件上传等
|
||||||
|
- **警惕 web 弱口令,用最快的速度去补。**
|
||||||
|
|
||||||
|
#### Bin 题目类型
|
||||||
|
大部分是 PWN,题目类型包括栈、堆、格式化字符串等等。
|
||||||
|
|
||||||
|
- 能力:
|
||||||
|
- 迅速找到二进制文件的漏洞,迅速打 patch 的能力
|
||||||
|
- 全场打 pwn 的 exp 脚本编写
|
||||||
|
- 熟悉服务器运维
|
||||||
|
- 尽快摸清楚比赛的 check 机制
|
||||||
|
- 如果二进制分析遇到障碍难以进行,那就去帮帮 web 选手运维
|
||||||
|
- 看看现场环境是否可以提权,这样可以方便我们搞操作(如魔改 libc 等等)
|
||||||
|
|
||||||
|
#### 技巧
|
||||||
|
- 如果自己拿到 FB, 先用 NPC 服务器或者自己服务器测试,格外小心自己的 payload 不要被别的队伍抓取到, 写打全场的 exp 时,一定要加入混淆流量。
|
||||||
|
- 提前准备好 PHP 一句话木马等等脚本。
|
||||||
|
- 小心其他队伍恶意攻击使我们队伍机器的服务不能正常运行,因此一定要备份服务器的配置。
|
||||||
|
- 尽可能在不搞崩服务和绕过 check 的情况下,上 WAF,注意分析别人打过来的流量,如果没有混淆,可以大大加快我们的漏洞分析速度。
|
||||||
|
- 工具准备: 中国菜刀、 Nmap、Xshell、 合适的扫描器等。
|
||||||
|
- 心态不要崩。
|
||||||
|
- 不要忽视 Github 等平台,可能会有写好的 exp 可以用。
|
||||||
|
- 将 flag 的提交自动化。
|
||||||
|
|
||||||
|
|
||||||
## 搭建 CTF 比赛平台
|
## 搭建 CTF 比赛平台
|
||||||
- [FBCTF](https://github.com/facebook/fbctf) - The Facebook CTF is a platform to host Jeopardy and “King of the Hill” style Capture the Flag competitions.
|
- [FBCTF](https://github.com/facebook/fbctf) - The Facebook CTF is a platform to host Jeopardy and “King of the Hill” style Capture the Flag competitions.
|
||||||
- [CTFd](https://github.com/CTFd/CTFd) - CTFd is a Capture The Flag in a can. It's easy to customize with plugins and themes and has everything you need to run a jeopardy style CTF.
|
- [CTFd](https://github.com/CTFd/CTFd) - CTFd is a Capture The Flag in a can. It's easy to customize with plugins and themes and has everything you need to run a jeopardy style CTF.
|
||||||
|
@ -1399,6 +1399,5 @@ hacked!
|
|||||||
|
|
||||||
|
|
||||||
## 练习
|
## 练习
|
||||||
- [**pwn** - UIUCTF 2017 - goodluck - 200](../src/Pwn/3.3.1_goodluck_200)
|
- [pwn NJCTF2017 pingme](../src/writeup/6.1.2_pwn_njctf2017_pingme)
|
||||||
- [**Pwn** - NJCTF 2017 - pingme - 200](../src/writeup/6.2_pwn_njctf2017_pingme)
|
- writeup 在章节 6.1.2 中
|
||||||
- writeup 在章节 6.2 中
|
|
||||||
|
@ -414,7 +414,7 @@ Dump of assembler code for function usefulFunction:
|
|||||||
0x0000000000400817 <+16>: ret
|
0x0000000000400817 <+16>: ret
|
||||||
End of assembler dump.
|
End of assembler dump.
|
||||||
```
|
```
|
||||||
64 位程序的第一个参数通过 edi 传递,所以我们再调用需要一个 gadgets 来将字符串的地址存进 edi。
|
64 位程序的第一个参数通过 edi 传递,所以我们需要再调用一个 gadgets 来将字符串的地址存进 edi。
|
||||||
|
|
||||||
我们先找到需要的 gadgets:
|
我们先找到需要的 gadgets:
|
||||||
```
|
```
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
# 4.1 AWD Model
|
|
||||||
|
|
||||||
- [Advanced](#advanced)
|
|
||||||
- [How can I get flag?](#how-can-i-get-flag)
|
|
||||||
- [Web 题目类型](#web-题目类型)
|
|
||||||
- [Bin 题目类型](#bin-题目类型)
|
|
||||||
- [About Web](#about-web)
|
|
||||||
- [About Bin](#about-bin)
|
|
||||||
- [TIPS](#tips)
|
|
||||||
|
|
||||||
|
|
||||||
## Advanced
|
|
||||||
|
|
||||||
> Attack With Defence,简而言之就是你既是一个 hacker,又是一个 manager。
|
|
||||||
> 比赛形式:一般就是一个 ssh 对应一个web服务,然后flag五分钟一轮,各队一般都有自己的初始分数,flag 被拿会被拿走 flag 的队伍均分,主办方会对每个队伍的服务进行 check,check 不过就扣分,扣除的分值由服务 check 正常的队伍均分。
|
|
||||||
|
|
||||||
## How can I get flag?
|
|
||||||
|
|
||||||
1. web 主要是向目标服务器发送 http 请求,返回 flag
|
|
||||||
2. bin 主要是通过 exploit 脚本读取 `/home/username` 下某个文件夹下的 flag 文件
|
|
||||||
|
|
||||||
## Web 题目类型
|
|
||||||
|
|
||||||
1. 出题人自己写的 CMS 或者魔改后的 CMS(注意最新漏洞、1day 漏洞等)
|
|
||||||
2. 常见(比如 `Wordpress` 博客啊、`Discuz!` 论坛啊)或者不常见 CMS 等
|
|
||||||
3. 框架型漏洞(CI等)
|
|
||||||
|
|
||||||
## Bin 题目类型
|
|
||||||
|
|
||||||
大部分是 PWN,题目类型包括栈、堆、格式化字符串等等。
|
|
||||||
|
|
||||||
## About Web
|
|
||||||
|
|
||||||
- [如何在 CTF 中当搅屎棍](http://www.mamicode.com/info-detail-1590551.html)
|
|
||||||
- [AWD 模式生存技巧](http://bobao.360.cn/ctf/detail/169.html)
|
|
||||||
- 能力:
|
|
||||||
- 漏洞反应能力
|
|
||||||
- 快速编写脚本
|
|
||||||
- web代码审计
|
|
||||||
- 心态放好,因为 web 比较容易抓取流量,所以即使我们被打,我们也可以及时通过分析流量去查看别的队伍的 payload,从而进行反打。
|
|
||||||
- 脚本准备:一句话,文件包含,不死马、禁止文件上传等
|
|
||||||
- **警惕 web 弱口令,用最快的速度去补。**
|
|
||||||
|
|
||||||
## About Bin
|
|
||||||
|
|
||||||
- 能力:
|
|
||||||
- 迅速找到二进制文件的漏洞,迅速打 patch 的能力
|
|
||||||
- 全场打 pwn 的 exp 脚本编写
|
|
||||||
- 熟悉服务器运维
|
|
||||||
- 尽快摸清楚比赛的 check 机制
|
|
||||||
- 如果二进制分析遇到障碍难以进行,那就去帮帮 web 选手运维
|
|
||||||
- 看看现场环境是否可以提权,这样可以方便我们搞操作(如魔改 libc 等等)
|
|
||||||
|
|
||||||
## TIPS
|
|
||||||
|
|
||||||
- 如果自己拿到 FB, 先用 NPC 服务器或者自己服务器测试,格外小心自己的 payload 不要被别的队伍抓取到, 写打全场的 exp 时,一定要加入混淆流量。
|
|
||||||
- 提前准备好 PHP 一句话木马等等脚本。
|
|
||||||
- 小心其他队伍恶意攻击使我们队伍机器的服务不能正常运行,因此一定要备份服务器的配置。
|
|
||||||
- 尽可能在不搞崩服务和绕过 check 的情况下,上 WAF,注意分析别人打过来的流量,如果没有混淆,可以大大加快我们的漏洞分析速度。
|
|
||||||
- 工具准备: 中国菜刀、 Nmap、Xshell、 合适的扫描器等。
|
|
||||||
- 心态不要崩.
|
|
||||||
- 不要忽视 Github 等平台,可能会有写好的 exp 可以用。
|
|
@ -20,9 +20,33 @@
|
|||||||
|
|
||||||
|
|
||||||
## 重定向输入字符
|
## 重定向输入字符
|
||||||
有时候我们需要在 shell 里输入键盘上没有对应的字符,如 `0x1F`,就需要使用重定向输入。下面是一个例子:[源码](../src/Others/4.2_0x1f.c)
|
有时候我们需要在 shell 里输入键盘上没有对应的字符,如 `0x1F`,就需要使用重定向输入。下面是一个例子:
|
||||||
|
```C
|
||||||
|
#include<stdio.h>
|
||||||
|
#include<string.h>
|
||||||
|
void main() {
|
||||||
|
char data[8];
|
||||||
|
char str[8];
|
||||||
|
printf("请输入十六进制为 0x1f 的字符: ");
|
||||||
|
sprintf(str, "%c", 31);
|
||||||
|
scanf("%s", data);
|
||||||
|
if (!strcmp((const char *)data, (const char *)str)) {
|
||||||
|
printf("correct\n");
|
||||||
|
} else {
|
||||||
|
printf("wrong\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
```
|
||||||
|
$ gcc test.c
|
||||||
|
$ ./a.out
|
||||||
|
请输入十六进制为 0x1f 的字符: 0x1f
|
||||||
|
wrong
|
||||||
|
$ echo -e "\x1f"
|
||||||
|
|
||||||
![](../pic/4.2_0x1f.png)
|
$ echo -e "\x1f" | ./a.out
|
||||||
|
请输入十六进制为 0x1f 的字符: correct
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## 从可执行文件中提取 shellcode
|
## 从可执行文件中提取 shellcode
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# 第四章 技巧篇
|
# 第四章 技巧篇
|
||||||
|
|
||||||
- [4.1 AWD模式](4.1_AWD.md)
|
- [4.1]()
|
||||||
- [4.2 Linux 命令行技巧](4.2_Linux_terminal_tips.md)
|
- [4.2 Linux 命令行技巧](4.2_Linux_terminal_tips.md)
|
||||||
- [4.3 GCC 编译参数解析](4.3_gcc_arg.md)
|
- [4.3 GCC 编译参数解析](4.3_gcc_arg.md)
|
||||||
- [4.4 GCC 堆栈保护技术](4.4_gcc_sec.md)
|
- [4.4 GCC 堆栈保护技术](4.4_gcc_sec.md)
|
||||||
|
BIN
pic/4.2_0x1f.png
BIN
pic/4.2_0x1f.png
Binary file not shown.
Before Width: | Height: | Size: 59 KiB |
@ -1,14 +0,0 @@
|
|||||||
#include<stdio.h>
|
|
||||||
#include<string.h>
|
|
||||||
void main() {
|
|
||||||
char data[8];
|
|
||||||
char str[8];
|
|
||||||
printf("请输入十六进制为 0x1f 的字符: ");
|
|
||||||
sprintf(str, "%c", 31);
|
|
||||||
scanf("%s", data);
|
|
||||||
if (!strcmp((const char *)data, (const char *)str)) {
|
|
||||||
printf("correct\n");
|
|
||||||
} else {
|
|
||||||
printf("wrong\n");
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user