del 4.1, merry christmas!

This commit is contained in:
firmianay 2017-12-25 13:48:57 +08:00
parent ca00ac14ce
commit c26ae41075
11 changed files with 79 additions and 85 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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 的队伍均分,主办方会对每个队伍的服务进行 checkcheck 不过就扣分,扣除的分值由服务 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.

View File

@ -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 中

View File

@ -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
``` ```

View File

@ -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 的队伍均分,主办方会对每个队伍的服务进行 checkcheck 不过就扣分,扣除的分值由服务 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 可以用。

View File

@ -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

View File

@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@ -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.