CTF思路
点击放大

* Beginner's guide: [Learning to read \[AT&T\] assembly language]()
* Big PDF: The Art of Assembly
* Quickly see what assembly different compilers generate: Compiler Explorer
* Quickly disassemble raw bytes: ODA
* Quickly assemble x86: Defuse assembler
* Azeria's guide to ARM assembly: ARM Assembly Basics
* Modern Binary Exploitation
* Basic Return Oriented Programming
* Blind Return Oriented Programming
* Signature Return Oriented Programming
* ROP Practice Problems
* Heap O
* Pwntools Beginner Tutorial
* File Stream Oriented Programming
| Key | Effect |
|------------------|---------------------------------|
| Esc | Go back |
| Ctrl-Enter | Go forward |
| H, Q, B | View as decimal, hex, or binary |
| N/U | Name/Undefine symbol |
| D, C, P | Convert to data, code, function |
| Ctrl-w | Save |
* Learn to create and use structs.
* IDAPython is very powerful and worth learning.
* Use FLIRT whenever you see a static binary. You can save a ton of normally wasted time reverse engineering common functions.
* Code co and tracing analysis is a useful technique to assist with reverse engineering. IDA has built in co and trace highlighting capabilities features. Lighthouse is also a great plugin for co analysis.
* Keypatch is a useful plugin that offers extra features compared to the built-in assembler
* Don't suffer through GDB. Use something like GEF, PEDA, or .
* You can also combine PEDA with Pwngdb, which is a powerful add-on that supports ad heap exploitation and FILE stream oriented exploitation features.
* Learn these!
* command <bp#> - Run commands when a bp is hit.
* ignore <bp#> <count> - Ignore the next _count_ occurrences of _bp_.
* watch|rwatch|awatch <addr> [thread <thread>] [mask <mask>] - Break when specified address is written to, read from, or either.
* hbreak <addr> - Set a hardware breakpoint.
* tbreak <addr> - Set a temporary breakpoint that disappears once hit.
* advance <addr> - Continue until the specified address.
* catch syscall [syscall] - Break on syscall (all or the specified).
* catch signal [signal] - Break on signal (all or the specified).
* bt - View stack frames (backtrace).
* up/down - Move up or down to a different stack frame.
* set follow-fork-mode <child|parent> - Tell gdb to either trace the parent or 'move' to the child on fork.
* set follow-exec-mode <same|new> - Tell gdb to either trace the original target or 'move' to the new process on exec*.
strings <stripped-libc> | grep glibc to determine the libc eu-unstrip like so: eu-unstrip <stripped-libc> <symbol-file><symbol-file> will be your newly redressed libc w/symbols!file - Try to determine what type of file you have.strace - See which syscalls an executable executes.ltrace - See which library calls an executable executes.ldd - See which dynamic libraries an executable loads.nm - Dump a binary's symbols* cd - - Go back to your last working directory.
* !! - Repeats your last command. Can also be used as a parameter.
* Readline shortcuts are _super_ handy.
| Key | Effect |
|----------|------------------------------------|
| Ctrl-E | Go to end of line |
| Ctrl-A | Go to start of line |
| Ctrl-L | Clear terminal |
| Ctrl-U | Delete e left of cursor |
| Ctrl-K | Delete e right of cursor |
| Ctrl-W | Delete word left |
| Ctrl-Y | Paste last deleted text |
| Ctrl-F | Mo forward one char |
| Ctrl-B | Mo back one char |
| Ctrl-P | Move back one line in history |
| Ctrl-N | Mo one line in history |
| Ctrl-R | Search bash history (start typing) |
| Ctrl-G | Cancel history search |
Quipquip : Online tool that will help you sol all subsituition cipher
Decode.fr : It contains ton of old school cipher
CyberChef : Try magic mode, it's real MAGIC!
kt.gy tools : Fast online tool to decode your string
#### Useful functions
* eval() / exec() / compile(), execute any python code
* dir() / type()
* globals() / locals() / vars(), finding useful
* getattr() / setattr(), useful when you need to call object.banned(). You can do getattr(object, "ban"+"ned") or something along the lines
#### Interesting Behaviour
* "A""B" == "AB", useful when + is blocked
#### Reading files
* Sometimes cat is filtered or banned, these are some alternatives
* fold
* nl (numbered)
* head (head portion of file)
* tail (tail portion of file)
*_hook function pointers that are called that are writeable:By default, these pointers are NULL. These function pointers are only called IF they are not NULL:
If you can o one of these pointers, you can control RIP the next time the associated libc function is called!
Useful if FULL RELRO is enabled/the GOT is read-only and we have a write-what-where!
printf() actually calls malloc() if printing anything out with a width > 65535-32!alloca()/__malloc_hook#### Do read past first null byte
* read()
* gets()
* fgets()
* memcpy()
* scanf()
#### Does copy the terminating nullbyte from src to dst
* strcpy()
开发语言:未知
Star 数:153
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕:hammer_and_pick: Useful tips by OTA CTF members :hammer_and_pick: 展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | 提 示 - : hammer_and_pick: OTA CTF成员提供的有用提示: |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 23:49:29 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 295 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |