码迷,mamicode.com
首页 > 其他好文 > 详细

攻防世界RE 6.getit

时间:2020-11-12 13:53:22      阅读:8      评论:0      收藏:0      [点我收藏+]

标签:结果   写入文件   sci   入参   move   tps   ops   remove   函数   

菜鸡发现这个程序偷偷摸摸在自己的机器上搞事情,它决定一探究竟

下载得到未加壳的64位ELF文件

进入ida64

技术图片

 

 /*这里复习一下文件函数的用法

https://blog.csdn.net/weibo1230123/article/details/79110542?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160238732019195246620782%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160238732019195246620782&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-79110542.pc_first_rank_v2_rank_v28&utm_term=%E6%96%87%E4%BB%B6%E5%87%BD%E6%95%B0&spm=1018.2118.3001.4187

1.定义文件类型指针变量

FILE *指针变量名

2.fopen(文件名,文件使用方式);

"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖).

3.fseek函数
fseek函数用来移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始.函数的调用形式如下:
fseek(pf,offset,origin)
pf:文件指针
offset:以字节为单位的位移量,为长整形.
origin:是起始点,用来指定位移量是以哪个位置为基准的.

4.fputc(将一指定字符写入文件流中)
相关函数 fopen,fwrite,fscanf,putc
表头文件 #include<stdio.h>
定义函数 int fputc(int c,FILE * stream);
函数说明 fputc 会将参数c转为unsigned char后写入参数stream指定的文件中。
返回值 fputc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。

5.fprintf函数
fprintf函数按格式将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中.Fprintf函数和printf函数相似,只是将输出的内容按格式存放到磁盘的文本文件中.调用形式如下:
fprintf(文件指针,格式控制字符串,输出项表)
如:fprintf(fp,"%d %d",x,y);
以下语句 fprintf(stdout,"%d %d",x,y)

6.fclose函数

关闭文件

当文件的读写操作完成之后,使用fclose函数关闭文件.格式如下:
fclose(文件指针)
如:fclose(fp);

7.remove

remove()是C语言中的函数,一般作用是删除文件。函数原型是intremove(char*filename)。

*/

从文件操作中看出

26行fseek 函数定位文件指针位置

27行fputc 函数根据 26 指定的位置放入指定字符 t[p[i]]

28行fseek 函数把文件指针置于文件首

29行fprintf 函数从文件首部开始覆盖整个文档内容

因此先前获取的内容在28 29行被盖去了,即便删除remove也得不到正确答案的文件

这里我尝试直接输出0x6010E0行的t值,结果得到

技术图片

 

于是换个方法开始写脚本

最终目的是导出t的值

技术图片

 

 运行得到答案

技术图片

 

攻防世界RE 6.getit

标签:结果   写入文件   sci   入参   move   tps   ops   remove   函数   

原文地址:https://www.cnblogs.com/FrozenW/p/13797197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!