CTF使人变傻——2

从零开始学习CTF——CTF是什么 前言: 从2019年10月开始接触CTF,学习了sql注入、文件包含等web知识点,但都是只知道知识点却实用不上,后来在刷CTF题才发现知识点的使用方法,知道在哪里使用,哪里容易出漏洞,可是在挖src漏洞中还是很迷漫,学了快一年还是没挖过一条src漏洞。这一系列是把自己学习的CTF的过程详细写出来,方便大家学习时可以参考。 一、CTF简介 简介 中文一般译作夺旗赛(对大部分新手也可以叫签到赛),在网络安全领域中指的是网络安全技术员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客 阅读详情

CTF竞赛权威指南读书笔记

第三章:汇编基础

CPU架构与指令集

CPU即中央处理单元(central processing unit),有时也简称为处理器。作用是从内存中读取指令,然后解码执行

CPU架构就是CPU的内部设计和结构。

指令集架构(Instrucion Set Architecture,ISA)简称指令集,包含了一系列的操作码(opcode),以及由特定CPU执行的基本命令。指令集在CPU中的实现称为微架构,要想设计CPU,首先得决定使用什么样的指令集,然后才是设计硬件电路。

由于指令集是一堆二进制数据,非常不利于阅读和理解,于是就有人发明了汇编语言,用近似人类语言的方式堆指令集进行了描述,每条汇编指令都有对应的指令。

指令集架构

第一个指令集架构称为:CISC(复杂指令集计算机),典型代表就是x86处理器。32位处理器8086,8088,80286都属于x86处理器。后来AMD又将x86架构阔充到了64位,称为AMD64。(Linux发行版分别称i386与amd64)

IBM则又有一套成体系的架构,称为:RISC(精简指令集计算机),它减少了指令的数量,和简化指令的格式来优化和提高CPU的指令执行效率。典型代表就是ARM处理器,其64位版本指令集称为AArch32。(Linux发行版中分别称为aarch64和arm)其具有较高的执行效率与较低的资源消耗,IOS,Android,更多的移动操作系统与嵌入式操作系统都运行在这类处理器上。

CISC与RISC对比

CISC的指令代码不等长,不利于解码与优化操作。
RISC等长的操作指令,会使得平均代码长度更大,占用更多的存储空间。
CISC的操作指令更为复杂,精细,便捷,
RISC则指令数较少,往往一个CIRS指令能够解决的问题,需要使用很多条RISC指令。
CISC的寻址方式多样,RISC只支持寄存器寻址与立即数寻址。
CISC的通用寄存器只有8~16个,RISC的通用寄存器数量高达31个。后者可以完全只利用寄存器传参。

x86/x64汇编基础

CPU操作模式

对于x86系统而言,有三个操作模式:保护模式(子模式8086模式),实地址模式,系统管理模式。
保护模式下所有的指令和特性都是有效的,此特性限制在程序所分配的独立内存区域(内存段)内。超过内存段的部分会被CPU阻止。
实地址模式下,程序可以直接访问硬件,而不必经过虚拟地址的映射。
系统管理模式则为操作系统提供了许多底层管理与安全保护的操作权限。
x86-64系统下,引入了一种新的模式,叫做IA-32e,分为兼容模式与64位模式,兼容模式先32位程序与16位程序无需重新编译,64位模式则会导致处理器在64位的地址空间下运行程序。

语法风格

AT&T风格与Intel风格,更为常用的是Intel风格。

  1. 16进制数用H作为后缀。
  2. 间接寻址用[ ]表示
  3. 操作位数为指令+dword ptr等(如QWORD PTR[RAX])
寄存器与数据类型

具体通用寄存器名称
16位寄存器
32位寄存器)
64位寄存器

注意,在64位模式下,需要在每条汇编指令增加REX的前缀后,操作数才会变成64位,增加8个通用寄存器。

此外,64位模式下与32位模式有着相同的标志位状态;64位模式不能访问通用寄存器的高位字节(AH等)

数据类型有:整型常量,浮点型常量,字符串常量。

常用汇编指令:

数据传送指令:

MOV

tips:数组表示法:

.data
数组名 数据成员大小 数据1,数据2……

数据运算指令:

SUB,ADD,INC,DEC,NEG(减,加,+1,-1,求补)

此处运算皆有溢出可能性,会改变FLAGS寄存器标志位。

跳转与循环指令:

JMP:无条件跳转指令,在编写汇编时,需要一个标号来标识。一般情况下该标号必须和JMP指令位于同一函数中,但使用全局标号则不受影响。(标号象征着CPU中的虚拟地址)

LOOP,ECX寄存器存放LOOP的次数,每次调用LOOP前,ECX中存放的数字先减一,再判断是否等于零,然后再执行。

栈操作指令:
PUSH & POP

查看栈内存大小指令

ulimit -a

栈相关操作指令:

栈寄存器:(E/R)SP,

栈的作用:

  1. 存储局部变量;
  2. 执行CALL指令调用函数时,保存函数地址以便函数结束时正确返回。
  3. 传递函数参数

CALL指令在调用某个子函数时,下一条指令地址会被PUSH入栈,等到函数结束时,程序将执行RET指令跳转到这个返回地址,将控制权交还给调用函数。等价于先POP再JMP到这个地址。

调用子函数这一行为需要使用PROC与ENDP伪指令来定义,且需要分配一个有效标识符,所有的x86汇编程序中都包含标识符为main的函数,而mian函数不需要RET指令。

栈传递函数参数时,最常见的调用约定为cdecl,
其格式为:

push arg3
push arg2
push arg1
call func

被调用函数是不知道调用函数向其传递了多少参数的。所以对于参数数量可变的函数来说,就需要说明符标示格式化说明,明确参数信息。

实验:

例程:

#include <stdio.h>
int main()
{
    int a = 12, b = 13;
    printf("%d,%d,%d", 9988);
    return 0;
}

执行结果:

9988,1984768,0

1984768,0,一般来讲这两个数是printf内部的局部变量。

PUSHFD&POPFD

由于MOV指令不能修改FLAGS寄存器内容,因此使用PUSHF就是保存FLAGS的最佳方式。


总结

指令集——>架构——>CPU实体——>汇编语言出现——>指令集(汇编语言)两种——>操作模式——>编写风格——>常用汇编指令——>重点讲述栈

网络安全CTF比赛有哪些事?——《CTF那些事儿》告诉你 CTF那些事儿》通过喜闻乐见的方式,以通俗易懂、幽默风趣的语言普及网络空间安全的知识,从而提高公众的网络空间安全意识,进而促进全行业水平的提高,为我国成为网络安全强国打下坚实的基础。 阅读详情

相关推荐

【操作系统】Hello CTF-专为CTF比赛封装的虚拟机 Beta版

很多师傅在学习与研究CTF的道路上,总是碰到想提升自我水平,但缺少本地化的训练环境以及安装各类软件的烦恼现象;因此拥有一些趁手“武器”,干起活来将会事半功倍。CTFos是探姬(ProbiusOfficial)专为CTF比赛封装的虚拟机,基于工具集封装多个版本和系统。CTF入门选手各行业网络/信息从业安全相关工作员但不想在工作机上安装CTF一些奇葩的软件…该系统是通过虚拟机封装的,需要使用打开!一个专为CTF比赛封装的虚拟机,开箱即用。

qq_47493625的博客 1万+

CTF】Win10中,CTF占用CPU过高造成打不出字的完美解决方法

CTF占用CPU过高造成,完美解决方法 1、不用听微软官方社区的说法..... 2、不用把Windows自带的输入法都是删除...... 3、不用建脚本循环删除“CTF”进程...... -- 只需: 1、进入到“%USERPROFILE%\AppData\Roaming\Microsoft\InputMethod\Chs\”下; 2、删除所有的"*.tmp"文件。 ---

ZZCOOLBOY的博客 7607

CTF从入门到提升

CTF选手的操作都是像吴白那么帅嘛?如何入门CTF比赛,一篇经验带你入门。 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球大会,以代替之前们通过互相发起真实***进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式。 入门CTF的内容会从CTFWEB...

anquanniu的博客 5942

CTF占用CPU过高是创建bat文件贴下双击无需重启

del %USERPROFILE%\AppData\Roaming\Microsoft\InputMethod\Chs*.tmp

Java000I的博客 3226

关于KeePass导致微软拼音输入法ChsIME.exe和CTF加载程序cpu占用高的问题

原因是KeePass输入密码时的安全窗口跟微软的输入法冲突了,根据作者建议,修改配置,去掉输入密码时弹出安全窗口。1、搜索找到有个老哥发现是KeePass(密码管理)软件导致的。2、然后找到作者的提供的解决方案。

qq_42215139的博客 1396

探索安全的边界:Exploit Me —— 一款针对ARM/ARM64平台的漏洞利用教学工具

Exploit Me 是一款面向安全爱好者和初学者的ARM/ARM64(AARCH64)平台漏洞利用教学工具,通过14个精心设计的漏洞场景,帮助用户实践和掌握CTF风格的漏洞利用技术。无论是想入门漏洞利用的新手,还是希望提升ARM架构安全技能的开发者,都能从这个项目中获得实战经验。 ## 为什么选择Exploit Me? 在嵌入式系统和物联网设备日益普及的今天,ARM架构的安全问题愈发重要。E

gitblog_01112的博客 590

CTF使——1

pwn方向学习

tas的博客 218

CTF使——3

more。

tas的博客 267

20个CTF练习平台让你从菜鸟大神!

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

韩束一叶子 1965

打比赛?《CTF那些事儿》你不能错过。

现如今,网络安全赛道不可谓不红火随着知识的指数式增长及政策扶持,安全行业也迎来了春天但随着这一领域的准入门槛逐渐降低,竞争愈发激烈我们更加呼吁专业化的就职员与技能素质优秀的大学生而作为快速提升网安技能的重要途径、各个行业选拔网安才的通用方法CTF比赛无疑提供了最优的解决办法。于是,《CTF那些事儿》应运而生,读懂它、读会它、读好它,零基础学安全,月薪10k不是梦!【文末免费送书!!!

等风来 8138

搭建一个ctf_手把手教你打造超级CTF平台

大家好,我是独立团孙德胜!CTF,是最近大火的一个IP……随之而来的是大批CTF训练平台和CTF比赛的到来。这其中呢,具有代表的CTF比赛有老牌的WCTF、XCTF,还有各大厂所举办的数不清的CTF比赛,这里为了避免广告嫌疑, 不写上了。但是呢,可以给大家安利个好的CTF训练平台,老牌的Bugku咱不提,基本上都知道。但新起之秀的圈子的砺剑CTF平台、BUUCTF 以及未来我朋友的超级平...

weixin_39855706的博客 2048

Volatility2安装使用以及CTF比赛题目(复现)

Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。题目链接:链接: https://pan.baidu.com/s/1s9Ey8G12COT_vI65TwhIKw?pwd=shkd 提取码: shkd Volatility2.6需要python2,pip安装模块也需要2版本,具体命令根据实际情况调整。本次是比赛题目的复现参考大佬链接自己在做了一遍:https://bnessy.blog.csdn.net/articl

Aluxian_的博客 1万+

现实中的CTF大赛都有哪些参与

CTF大赛的问题蓝队云还是很有发言权的,毕竟连续参加了云南省4届网络安全GONG防大赛,也有出题经验。 回答这个问题之前,我们首先需要知道CTF是什么? CTF,英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行GONG防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。 CTF的主办和参赛 通俗易懂的讲,CTF也叫作网络安全GONG防大赛。这类大赛一般都是由政府安全部门、从事信息安全的企

ZHAOMIiii的博客 3708

CTF实战实践

文章目录前言一、什么是CTF1. CTF竞赛模式2. CTF各大题型简介二、CTF实战1.nmap扫描2. whatweb探测3. Dirb爆破4. wireshark分析5. 利用漏洞提权6. SSH登录服务器总结 前言 今天做了一个CTF的实践,对目标靶机进行了渗透,以此了解CTF的实战过程。 一、什么是CTF         首先先来介绍一下CTF。         CTF(Capt.

weixin_46660023的博客 5962

20个CTF练习平台让你从菜鸟大神!零基础入门到精通,看这篇就够了!

本文推荐了20个CTF练习平台,帮助网络安全爱好者从入门到精通。平台分为综合型和专项型,综合类如Hack The Box、TryHackMe适合不同水平用户,专项类如OWASP Juice Shop专注于Web安全。文章建议初学者从TryHackMe开始,同时学习渗透测试工具并加入社区交流。最后强调需遵守网络安全道德规范。文末还提供了学习资料包,包含成长路线、视频教程等资源。

2401_84205765的博客 2221

【?CTF】Week2-Web

粗略记录一下,如果有错误还请各位师傅指出,欢迎交流讨论。

int_encourage的博客 2094
上一篇: CTF使人变傻——1
下一篇: CTF使人变傻——3
hyjctrl
博客等级 码龄8年 134粉丝 · 13原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值