首页 > 其他分享 >萌新带你开车上p站(终极番外)

萌新带你开车上p站(终极番外)

时间:2023-07-27 23:05:29浏览次数:35  
标签:文件 终极 const 字节 番外 参数 萌新带 x00 环境变量


 

0x01前言


这关其实和pwn关系不大,主要考察的都是linux下一些函数的操作,考察linux的基本功。涉及到的知识点包括一些经典的函数原型、IO重定向、文件描述符、管道、环境变量、socket编程、符号链接等。

这里顺便真心安利一本书,《UNIX环境高级编程》,简称APUE书里介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上结合函数原型介绍了多个应用示例,如果这本书啃透,正常题型linux下的pwn问题都不大。

 

0x02


登录后直接看源文件

萌新带你开车上p站(终极番外)_字符串

可以看到这里分成了好几关

先看第一关//argv

第一个if要求传入100个参数

第二个if要求第A个(也就是ascii的65)参数的值为’\x00’

第三个if要求第B个(也就是ascii的66)的参数值为’\x20\x0a\x0d’

这题我们写c

萌新带你开车上p站(终极番外)_字符串_02

这里的execve的原型为:

int execve(const char * filename,char * const argv[ ],char * const envp[ ]);

execve()用来执行参数filename字符串所代表的文件路径,第二个参数是利用指针数组来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。

也就是说代码中的execve是用于执行input程序的,而作为传入的参数,最后要以null结尾,对应代码中的args[100]=NULL

看第二部分//stdio

read函数原型为ssize_t read [1]  (int fd, void *buf, size_t count);

read()会把参数fd所指的文件传送count 个字节到buf 指针所指的内存中。

而题目源码中的fd的0,2分别对应的是stdin,stderr,这里是读4个字节到buf

然后调用memcmp

memcmp函数的原型为 int memcmp(const void *str1, const void *str2, size_t n));其功能是把存储区 str1 和存储区 str2 的前 n 个字节进行比较

 

整理一下,代码的逻辑就是从stdin中读4个字节,与\x00\x0a\x00\xff比较,从stderr读4个字节,与\x00\x0a\x02\xff比较

那么问题来了,stdin是标准输入,我们可以直接通过输入来控制,而stderr,该怎么控制呢

答案是IO重定向

 

这里涉及管道pipe的应用

pipe有两端,一段write写入,一端read读出,这里解题用到的就是把管道的read重定向到某一个流中,从而进程间可以进行通信。

这里我们的思路是父进程fork子进程,子进程write需要的四字节到pipe,父进程把pipe的read重定向到stdin,stderr。通过这种方式我们就可以控制stdin和stderr的内容了

先定义pipe

萌新带你开车上p站(终极番外)_重定向_03

 

第三关//env

strcmp()用于字符串的比较,getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。

正常情况下肯定没有0deadbeef的环境变量,要想if条件成立,肯定需要我们自己写一个键值对

我们可以使用setenv()增加环境变量

setenv()原型为int setenv(const char *name,const char * value,int overwrite)

函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果没有此环境变量则无论overwrite为何值均添加此环境变量

本地写好源文件,对应代码为

setenv("\xde\xad\xbe\xef", "\xca\xfe\xba\xbe", 1);

这时候execve传入的第三个参数为新环境变量数组,我们声明为environ

萌新带你开车上p站(终极番外)_环境变量_04

 

第四关//file

打开名为”\x0a”的文件,比较前四个字节是否为”\x00\x00\x00\x00”

这关很简单,我们相应的用写权限打开该文件,写前四个字节即可

萌新带你开车上p站(终极番外)_重定向_05

 

第五关//network

代码的意思是以input这个文件作为服务器,监听C端口

通过recv来接收,如果收到的为\xde\xad\xbe\xef,则通过

我们根据对应的代码稍微修改下就可以了

萌新带你开车上p站(终极番外)_环境变量_06

在本地编写完整的代码

萌新带你开车上p站(终极番外)_重定向_07

萌新带你开车上p站(终极番外)_字符串_08

萌新带你开车上p站(终极番外)_重定向_09

通过scp上传

萌新带你开车上p站(终极番外)_重定向_10

登录后切换到相应的路径编译源文件

萌新带你开车上p站(终极番外)_字符串_11

直接执行是会报错的,因为当前目录下没有flag文件,我们又没有权限移动它,此时可以考虑使用符号链接的方式,通过绝对路径或者相对路径的形式指向flag。因为对符号链接文件进行读写会表现为直接对目标文件进行操作

萌新带你开车上p站(终极番外)_重定向_12

这里是让/tmp/yale/flag直接指向/home/input2/flag,然后执行

萌新带你开车上p站(终极番外)_环境变量_13


标签:文件,终极,const,字节,番外,参数,萌新带,x00,环境变量
From: https://blog.51cto.com/u_14601424/6875086

相关文章

  • 分布式操作系统是操作系统的终极形态吗?
    昨天一位网友私信我,提出一个问题:“Laxcus分布式操作系统会不会是操作系统发展的终极形态?”。今天觉得有必要把这件事说一说,所以就忙里偷闲写下这篇文章。咱们先说结论:是也不是,需要具体情况具体分析。操作系统发展到今天,基本分为两种:面向个人工作的操作系统,和面向企业业务的操作系统......
  • 文件描述符终极使用
    0x01文件描述符介绍Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。这个操作包含各种文件的读写,程序......
  • Github打不开、chrome应用商店打不开终极解决方案-pigcha
    记录一下一个非常好用的工具,便于后期自己进行查找!Pigcha是什么?是⼀款专业的全平台的⽹络代理⼯具,能xx上⽹,能⽅便地针对域名进⾏代理或⾛本地,非常好用。Pigcha使⽤教程下载客户端并注册登录:入口地址官方使用教程:入口地址是联系客服微信:mrnew_注:如果您发现速度未达预......
  • 如何把2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?(番外篇)
    大家好,我是皮皮。一、前言前几天在Python黄金群【莫生气】问了一个Python数据处理的问题,需求如下:大佬们,请教一个问题,2274587.84如何快速的转换为大写:贰佰贰拾柒万肆仟伍佰捌拾柒元捌角肆分?有没有工具或者网页啥的?不一定要Python实现。前面两篇文章已经给大家很多方法了,今天在P......
  • AI绘画创意文字全流程揭秘,你的终极文字艺术实操宝典
    本教程收集于:AIGC从入门到精通教程汇总AIGC技术不断更新迭代,国内出现了越来越多的新玩法,比如最近大家都在热议的AI绘画创意文字。过去的一周,我把这些新玩法都研究了一遍,并总结了一套完整的制作流程。主流的创意文字玩法主要分为四类:光影文字嵌入文字隐藏文字海报文字每......
  • 面向普通用户和开发者的ChatGPT Prompt Engineering 终极指南
    你准备好发掘ChatGPT的全部潜力了吗?想象一下拥有一个AI工具,它能在很多方面帮助你——从回答问题和创作有趣内容到提供个性化建议。这就是「PromptEngineering」的用武之地——一种有效且强大的方法,通过精心创建Prompt和指导,让ChatGPT的工作更出色。在这篇文章中,我......
  • office软件提示“您的组织策略阻止我们进行该操作”错误的解决办法-终极汇总
    环境系统:win1064位专业版时间:2023年7月15日1.选择默认软件在设置中打开默认应用,将web浏览器改为你想要的浏览器 2.修改注册表同时按下win+R,输入regedit打开注册表。修改计算机\HKEY_CURRENT_USER\Software\Classes\.html路径下的值为Htmlfile 3.重启office软件或......
  • 融云观察:社交大佬发家史,模仿才是终极成功学密码?
    上周,多所高校因微信支付将收取手续费宣布暂停使用,微信致歉并称在校园非盈利场景将持续保持零费率。关注【融云全球互联网通信云】了解更多微信的回应非常迅速,但还是多次冲上了热搜榜,可见对一个用户量超过12亿的社交巨头来说,任何动作都将产生巨大影响。从2007年第一代iPhone诞......
  • 最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优
    Linux命令相关查看指标CPU指标vmstat指令vmstat-nm该命令用于每隔n秒采集系统的性能统计信息,共采集m次。[root@svr01]$vmstat13procs-----------memory-------------swap-------io------system-------cpu-----rbswpdfreebuffcachesiso......
  • Windows服务启动exe无界面终极解决方案
    摘自:https://www.cnblogs.com/ZoeWong/p/17516579.html1、前言我这个方案(C#操作)是彻底解决【从Windows服务启动程序exe,程序无界面】问题的终极解决方案,终极方案,绝对的终极方案,本来打算收钱的,还是算了,你们也不容易,关注我一下就行。后附代码下载地址。由于安全性问题,Vista以后的......