CTF基础知识及web
CTF基础知识及web
一、CTF简介
CTF(Capture The答题 Flag)夺旗比赛,是源码源码网络安全领域中技术人员之间进行技术竞技的一种比赛形式。CTF起源于年DEFCON全球黑客大会,答题取代了黑客之间通过发起真实攻击进行技术比拼的源码源码传统方式。如今,答题刷站源码CTF已经成为全球网络安全领域流行的源码源码竞赛形式,年全球举办的答题国际性CTF赛事超过五十场。DEFCON作为CTF赛制的源码源码发源地,DEFCON CTF被誉为CTF赛场的答题“世界杯”。
二、源码源码CTF赛事介绍
CTF是答题一种流行的信息安全竞赛形式,以“夺得Flag”为特点。源码源码比赛流程中,答题参赛队伍需通过攻防对抗、源码源码程序分析等方式,在主办方提供的环境中获取一串具有一定格式的字符串或其他内容,并提交给主办方,以获得分数。Flag是CTF竞赛中用来称呼这种内容的通用术语。
三、CTF竞赛模式
1. 解题模式(Jeopardy)
解题模式CTF赛制,参赛队伍通过互联网或现场网络参与,解决网络安全技术挑战题目,以分值和时间排名,主要用于在线选拔赛。题目涉及逆向、漏洞挖掘与利用、Web渗透、密码、取证、隐写、安全编程等。
2. 攻防模式(Attack-Defense)
攻防模式CTF赛制中,参赛队伍在网络空间内互相进行攻击与防御,挖掘网络服务漏洞并攻击对手服务得分,同时修补自身服务漏洞以避免丢分。这种赛制实时反映比赛情况,最终以得分决定胜负,强调智力、技术、体力及团队协作。
3. 混合模式(Mix)
混合模式CTF赛制结合了解题与攻防元素,参赛队伍通过解题获取初始分数,然后通过攻防对抗进行得分增减,会员邀请推广源码最终以得分高低分出胜负。iCTF国际CTF竞赛是此类赛制的典型代表。
四、CTF竞赛内容
主流CTF比赛内容包括但不限于Web应用漏洞挖掘与利用、密码学、程序逻辑分析与漏洞利用、Misc杂项(如隐写、数据还原、社会工程与信息安全相关的大数据)、二进制程序逆向分析、编程类等。
五、国内外著名赛事
国际知名CTF赛事包括DEFCON CTF、“世界杯”般的比赛、UCSB iCTF、Plaid CTF、Boston Key Party、Codegate CTF、Secuinside CTF、XXC3 CTF、SIGINT CTF、Hack.lu CTF、EBCTF、Ghost in the Shellcode、RwthCTF、RuCTF、PHD CTF等。国内赛事有XCTF全国联赛、AliCTF、KCTF、XDCTF、HCTF、ISCC、LCTF、TCTF、百度杯CTF夺旗大战、全国大学生信息安全竞赛创新实践能力赛线上赛等。
六、如何学习CTF
学习CTF需要分析赛题情况,了解涉及的知识点,并根据自身能力选择适合的方向。建议从低难度题目入手,研究历年经典写解(writeup),并关注团队需要掌握的swoole解密php源码基础知识,如Linux基础、计算机组成原理、操作系统原理、网络协议分析等。推荐书籍包括《RE for Beginners》、《IDA Pro权威指南》等。
CTF学习中,重要的是兴趣和团队协作。选择适合自己的方向,从低到高、由易入难地学习,同时研究历年经典写解,可显著提升技能水平。书籍推荐覆盖PWN、Reverse、Crypto、Web、Misc等方向,助力提高CTF竞赛能力。
七、备份文件下载
CTF竞赛中,涉及的备份文件下载技术包括目录遍历、PHPINFO、网站源码、.bak文件、vim缓存和.DS_Store文件等。具体操作步骤包括:点开链接、进入环境、使用工具(如burp)暴力破解、找到flag并提交等。注意避免在提交时出现空格,确保提交内容的正确性。
本**二网安专业,想打ctf,该怎么入门?
CTF竞赛,中文译作夺旗赛,是一种网络安全领域的竞技活动,起源于年DEFCON全球黑客大会,旨在通过模拟网络安全攻击与防御,提升参赛者的技能。CTF竞赛有多种模式,包括解题模式、攻防模式以及结合两种模式的混合模式,其中解题模式和攻防模式是较常见的两种。
CTF竞赛题目通常分为六大类:Web、MISC、必赢指标源码Crypto、Reverse、PWN和Mobile,每类题目都涉及不同的技能和知识,如Web类侧重于常见Web漏洞的利用,Crypto类则强调密码学知识,Reverse类则关注软件逆向工程。参赛者需具备Windows和Linux基础、计算机组成原理、操作系统原理、网络协议分析、IDA工具使用、逆向工程、密码学、缓冲区溢出等相关知识。
入门CTF竞赛,首先要确定学习方向,A方向以PWN、Reverse和Crypto为主,B方向则以Web和Misc为主。基础学习内容包括Windows和Linux基础、计算机组成原理、操作系统原理、网络协议分析等。选择A方向还需掌握IDA工具使用、逆向工程、密码学、缓冲区溢出等知识;选择B方向则需熟悉Web安全、网络安全、内网渗透、数据库安全等。
刷题是入门CTF竞赛的关键步骤,通过大量练习,可以提升解题能力和技巧。选择已存在Writeup的比赛或参加最新CTF比赛,总结解题过程并撰写博客等,可以加深理解和学习效果。推荐平台如bugku,通过实际解题寻找工具,总结经验,逐步提高。
在编程方面,建议学习PHP、Python等热门语言,wx时间夺宝源码PHP是必学项目,学透后代码审计将变得轻松。编程技能应足够使用,对照文档编写程序,理解基础即可,避免过度深入,以防忽略安全知识。
最后,为了帮助学习网络安全,提供了包括入门/进阶学习资料、网络安全源码合集与工具包、面试题在内的资源包,如有需要,可通过链接免费领取。
pwntools处理ELF文件中plt与got表获取
在pwntool源码中,elf.py中的elffile处理ELF文件获取section。
elffile.py中的get_section逐个获取section_header,通过判断'sh_type'属性来确定section类型,方便后续处理。
ELF文件包含多种section,每种section类型在section header中有对应描述,例如:
ELF文件中的section类型包括但不限于:SHT_NULL(无效section header),SHT_PROGBITS(程序数据部分),SHT_SYMTAB/SHT_DYNSYM(符号表),SHT_STRTAB(字符串表),SHT_RELA/SHT_REL(重定位表),SHT_HASH(哈希表),SHT_DYNAMIC(动态链接信息),SHT_NOBITS(不占空间的section),SHT_SHLIB/SHT_LOPROC/SHT_HIPROC/SHT_LOUSER/SHT_HIUSER(特殊用途section)。
依据section类型,elffile.py中的_make_section函数调用特定类进行处理。例如,针对SHT_HASH,调用_make_elf_hash_section,并最终指向ELFHashSection,用于从ELF文件读取section数据。
获取ELF文件的section后,可以进一步获取symbol表、plt表与got表。
在_populate_symbols函数中,判断section是否属于SymbolTableSection,对应于_make_section()中检测sectype为SHT_SYMTAB、SHT_DYNSYM或SHT_SUNW_LDYNSM。iter_symbols返回sec._symbols,每个symbol对象包含name和value,若value非零,则将name和value关联存入self.symbols。
在_populate_got中,处理静态链接时关注relocation section,对应sectype为'SHT_REL'和"SHT_RELA'。若symbol和name非空,则对self.got进行赋值。
在_populate_plt中,首先处理self.got和self.symbols,读取到内容后,将section.data()的范围内,即以section.header.sh_addr为起始地址,以section.data()长度为范围,4字节对齐进行扫描。选取对应函数和其地址存入self.plt。
最终,通过这些步骤,实现了对ELF文件中self.symbols、self.got和self.plt的获取。
Pwnhub春季赛相关体验及wp
首次参加Pwnhub举办的大型公开赛,体验令人满意。Pwnhub的声誉名副其实,比赛中只有四个解题,且难度集中在easyrop。比赛前期的宣传充分到位,Pwnhub历来以举办公开月赛闻名,此次公开赛规模空前,奖励丰厚。
比赛题目多样,涵盖了web、misc、crypto、re、pwn等多个方向,还加入了ACM、OCR、以及汇编等不同类型的题目,甚至引入了网页版的传奇游戏,以减轻比赛的枯燥性。题目设计全面,从多个方面考验参赛者的个人能力。
比赛流程流畅,靶机启动迅速,不限制数量,后期取消了靶机时间限制,但在所有靶机都开放在同一IP地址上,端口号可以遍历,加之不是动态flag,可能导致蹭取flag的情况。
首次在CTF比赛中遇到使用Flash游戏的题目,新颖有趣,促使我迅速安装Flash并进入主办方设置的游戏。游戏类题目共有四个小题,最后一个题需要获取服务器的shell,可以视为半个web挑战。
注册账号,创建角色登录游戏,发现公告栏中明确显示了flag,十分友好。下一步是购买题目中的元宝召唤道具,但需要通过抽奖将绑定元宝转化为元宝,再购买。打死召唤出的怪物后,会掉落flag之书1,注意掉落的flag之书可以被其他玩家捡走,谨防被抢,我的flag为flag{ nonono_notmola}。
主办方放出服务器源码,虽然经过修改,但仍能从中找出一些漏洞。从log.php中可以获取生成token的密钥,允许任意用户登录其他账户。在log.php中,理论上存在注入漏洞,但线上复现不成功。web方面的其他漏洞未能发现,获取shell需要对游戏服务器文件进行逆向工程。
web部分考察知识新颖且难度适中。在EzPDFParser中,通过java写的PDF解析器在解析PDF时触发log4j2漏洞,搭建恶意JNDI服务器,修改PDF文件即可触发漏洞。在easyCMS中,通过测试MySQL联通性,利用MySQL读取文件,通过Rogue-MySql-Server实现,使用PHP脚本操作。
在baby_flask中,利用flask模板渲染不会更新的问题,通过生成个模板并在缓存刷新时执行payload,即可获取flag。Misc部分需要使用裸眼3d技巧,借助stegsolve工具将两张图分开,获取flag{ nice_pwnhub}。在其他页面的签到中,通过关于页面的视频中的二维码找到flag。
比赛持续小时,时间较长,但某些类别的题目数量似乎不是很多,如web部分,队伍数量较多,完成三个题后,期待后期上新题,可惜未能如愿。整体体验良好,通过赛题学习到许多知识,期待Pwnhub举办更多类似的公开赛!
pwn基础— Got表劫持
随着技术的发展,攻击者越来越重视对软件的深入理解,其中对GOT(全局偏移表)的劫持技术成为了渗透测试中的一种重要手段。本文将对GOT表劫持的基础知识进行深入讲解,包括其原理、流程、检测方法、保护机制、源码分析以及利用脚本的编写和动态调试分析。
程序信息方面,我们以ELF程序为例。由于延迟绑定机制的存在,GOT是可以被修改的,这为攻击者提供了任意控制程序流程的可能性。劫持原理主要分为两步:首先,在未执行漏洞函数前,GOT中的特定地址存储着真实的函数地址;然后,通过执行漏洞函数,将该地址修改为攻击者想要的函数地址,如system函数,从而在再次调用原函数时,其行为被改变了。
检测保护机制时,通常使用检查安全工具来分析程序的安全性。在本例中,程序仅开启了Canary保护和部分RELRO保护,这意味着堆、栈、BSS段代码可执行,但GOT仍然可写。这为GOT劫持提供了条件。保护机制的全称为RELRO(Relocation Read-Only),通过设置全RELRO,可以防止GOT劫持,因为在加载时将所有函数绑定完成,GOT被设置为不可写。
分析源码是理解攻击流程的关键步骤。题目直接提供了源码,通过仔细阅读,我们可以发现puts@plt地址和全局变量name的地址,这是进行GOT劫持和shellcode注入的基础。
编写利用脚本是将理论知识转化为实践的环节。通过编写并执行exp脚本,成功实现了getshell,验证了攻击流程的有效性。动态调试分析提供了更直观的视角,通过在关键位置设置断点,观察内存内容的变化,确认shellcode的注入和目标地址的修改,最终实现目标函数的劫持。
综上所述,GOT表劫持技术是渗透测试领域中一种复杂且强大的攻击手段。通过深入了解其原理、流程、保护机制和利用方法,可以有效提升安全意识和防御能力。对于开发者而言,及时更新安全保护机制,如全RELRO保护,可以有效防止GOT劫持,保障软件的安全性。
CTF入门必备之题型介绍
CTF入门必备,理解题型至关重要。比赛中的主要题型包括Web渗透、RE逆向、Misc杂项、PWN漏洞利用和Crypto密码破解。
Web类题目是入门者的友好选择,涉及注入、XSS、文件包含等漏洞,信息搜集对解题至关重要。通过敏感目录或备份文件,可以获取源代码和内部URL。例如,Banner识别可揭示框架信息,帮助利用历史漏洞。SQL注入是常见漏洞,包括多种注入方式,如数字型、UNION等。
文件读取漏洞允许攻击者读取私密文件,威胁服务器安全。SSRF漏洞则利用服务端的请求功能,攻击内部系统。命令执行漏洞和XSS漏洞分别涉及恶意命令注入和网页代码注入,需对用户输入进行严格检查。
二进制类题目中,Android题目多关注逆向和杂项。逆向涉及Java/C++的分析和调试,静态与动态分析是常用手段。代码保护和混淆增加了逆向难度,而符号执行和插桩则是解题工具。
PWN题目聚焦于利用漏洞获取权限,需要强大的逆向和数学能力。密码学题型对参赛者的数学和逻辑思维要求极高,挑战性日益提升。
掌握这些题型,对于新入门的CTF选手来说,是提高解题技能和理解深度的关键步骤。每个领域都有其独特技巧和策略,需要深入学习和实践才能在游戏中脱颖而出。
2024-12-24 08:23
2024-12-24 07:30
2024-12-24 06:37
2024-12-24 06:35
2024-12-24 06:33