IDF实验室:倒行逆施
简单的PE文件逆向(.exe-IDA)
下载下来文件之后发现是一个exe文件,运行以后发现。
然后利用IDA对它进行操作。然后
选择strings
再按ctrl+F,在下方框框中输入plz enter the flag:
双击进入以后找到format那块,就是主函数再使用F5可以使函数变成c代码。
int sub_4113A0()
{
int v1; // [sp+Ch] [bp-194h]@1
int i; // [sp+D4h] [bp-CCh]@8
int v3; // [sp+E0h] [bp-C0h]@8
int v4; // [sp+ECh] [bp-B4h]@1
int v5; // [sp+F0h] [bp-B0h]@1
int v6; // [sp+F4h] [bp-ACh]@1
int v7; // [sp+F8h] [bp-A8h]@1
int v8; // [sp+FCh] [bp-A4h]@1
int v9; // [sp+100h] [bp-A0h]@1
int v10; // [sp+104h] [bp-9Ch]@1
int v11; // [sp+108h] [bp-98h]@1
int v12; // [sp+10Ch] [bp-94h]@1
int v13; // [sp+110h] [bp-90h]@1
int v14; // [sp+114h] [bp-8Ch]@1
int v15; // [sp+118h] [bp-88h]@1
int v16; // [sp+11Ch] [bp-84h]@1
int v17; // [sp+120h] [bp-80h]@1
int v18; // [sp+124h] [bp-7Ch]@1
int v19; // [sp+128h] [bp-78h]@1
int v20; // [sp+12Ch] [bp-74h]@1
int v21; // [sp+130h] [bp-70h]@1
int v22; // [sp+134h] [bp-6Ch]@1
int v23; // [sp+138h] [bp-68h]@1
int v24; // [sp+13Ch] [bp-64h]@1
int v25; // [sp+140h] [bp-60h]@1
char v26; // [sp+14Fh] [bp-51h]@1
]; // [sp+178h] [bp-28h]@2
char v28; // [sp+189h] [bp-17h]@13
char v29; // [sp+18Ah] [bp-16h]@14
char v30; // [sp+18Bh] [bp-15h]@15
char v31; // [sp+18Ch] [bp-14h]@16
char v32; // [sp+18Dh] [bp-13h]@17
unsigned int v33; // [sp+19Ch] [bp-4h]@1
int savedregs; // [sp+1A0h] [bp+0h]@1
memset(&v1, 0xCCu, 0x194u);
v33 = (unsigned int)&savedregs ^ dword_417000;
v26 = ;
v4 = ;
v5 = ;
v6 = ;
v7 = ;
v8 = ;
v9 = ;
v10 = ;
v11 = ;
v12 = ;
v13 = ;
v14 = ;
v15 = ;
v16 = ;
v17 = ;
v18 = ;
v19 = ;
v20 = ;
v21 = ;
v22 = ;
v23 = ;
v24 = ;
v25 = ;
printf("plz enter the flag:");
sub_411136();
)
{
getch();
v1 = sub_411136();
v27[v26] = v1;
)
break;
)
{
printf("\b\b");
sub_411136();
--v26;
}
else
{
printf("%c", v27[v26]);
sub_411136();
++v26;
}
}
v3 = ;
; i < ; ++i )
{
if ( v27[i] != byte_415768[*(&v4 + i)] )
v3 = ;
}
|| v29 != || v30 != || v31 != || v32 != )
v3 = ;
v27[v26] = ;
printf("\r\n");
sub_411136();
if ( v3 )
{
printf("u r wrong\r\n\r\n");
sub_411136();
sub_41113B();
}
else
{
printf("u r right!\r\n");
sub_411136();
}
system("pause");
sub_411136();
sub_411082();
sub_411014();
return sub_411136();
}
我们发现如果要得到正确的flag,那么v3 = 0。
在这段函数中
; i < ; ++i )
{
if ( v27[i] != byte_415768[*(&v4 + i)] )
v3 = ;
}
光标移动到byte_415768上,IDA会提示你这是一个char[]的数组,双击它
就可以发现这个数组的内容是wfxc{gdv}fwfctslydRddoepsckaNDMSRITPNsmr1_=2cdsef66246087138。
然后*(&v4 + i)。这句话的意思大概就是取v4的地址,然后++,从v4取到v20吧。写个小程序跑一下就能发现得到wctf{Pe_cRackme1_。
然后
|| v29 != || v30 != || v31 != || v32 != ) v3 = ;
选择转化成char型。得到v28 = ‘1‘, v29 = '0' .......
后半段flag便是1024}
综上得到答案。
IDF实验室:倒行逆施的更多相关文章
- IDF 实验室部分题目WriteUp
前天花了一个下午的时间刷了几道IDF实验室的题目, 这个网站实在是有点冷清, 题目也比较少, 所以就被我和师兄们刷榜了2333... 因为我最先开始做, 所以就干脆刷到第一去了. 题目很水, 切莫见怪 ...
- IDF实验室-CTF训练营-牛刀小试CTF
自从开始玩CTF后,发现这个游戏还是比较有意思,发现了一个练习场地IDF实验室:http://ctf.idf.cn/ 刷刷里面的题目,今天完成了其中的牛刀小试,分享一下解题思路: 1. 被改错的密码 ...
- IDF实验室:牛刀小试
被改错的密码[从格式和长度来推测出是MD5] 迷醉..人生第一道ctf题?据说是因为看起来像是MD5加密的格式,但是数了一下发现有33个字符,就推测???熊孩子多敲了一位进去.从32个变33个了,然后 ...
- IDF实验室WORD隐写术
上帝也哭泣http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=48 下载下来,发现是一个word文档,看来信息应该就 ...
- IDF实验室-简单编程-特殊的日子 writeup
题目:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=50 题目提示要爆破,代表加密应该是不可逆的. 密文:4D ...
- IDF实验室-简单的ELF逆向 writeup
题目:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=39 下载得到ElfCrackMe1文件,直接用IDA打开 ...
- IDF实验室-python ByteCode writeup
题目地址:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=45 下载来发现是crackme.pyc 可以用unc ...
- IDF实验室-简单编程-字符统计 writeup
题目地址:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=37 网站:http://ctf.idf.cn/gam ...
- IDF实验室解题学习笔记1
1.图片里的英文 图片可以有很多种打开方式,破解该题,需将图片下载下来. 对于图片,我们可以使用图片编辑软件,进行各种调明暗,变色调等操作. 我们还可以使用2进制或者16进制的文件打开方式打开.该图使 ...
随机推荐
- HTTP请求头
了解HTTP请求,是每个BS程序员必备的素质.下面篇幅进行记录.参考网址:http://tools.jb51.net/table/http_header Http请求方式 GET: 向Web服务器请求 ...
- bzoj 2301: [HAOI2011]Problem b
2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Submit: 3757 Solved: 1671 [Submit] ...
- 微信学习总结 09 解析接口中的消息创建时间CreateTime
1 消息的创建时间 网页超链接的作用以及如何在文本消息中使用网页超链接 2. 具体实现 刘峰博主的博文已经分析的很清楚了,直接去看就行了 .http://blog.csdn.net/lyq8479/a ...
- [转载]抓包,端口镜像,monitor session命令(转)
原文地址:抓包,端口镜像,monitor session命令(转)作者:浮云皓月 一.SPAN简介 SPAN技术主要是用来监控交换机上的数据流,大体分为两种类型,本地SPAN和远程SPAN. --Lo ...
- Base64原理
一.Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大的 ...
- 5Hibernate入门----青软S2SH(笔记)
这里有个问题,就是这本书第五章的示例代码中的hibernate的jar包有问题,各种找不到类,把lib下的包后换成第六章里的包就好了. 换成5.1的就好了,而且如果只是简单使用hibernate的话, ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
- [Python] 学习笔记之MySQL数据库操作
1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...
- 计算 TP90TP99TP...
what-do-we-mean-by-top-percentile-or-tp-based-latency tp90 is a minimum time under which 90% of requ ...
- Java多态与反射
多态通过分离做什么和怎么做,从另一个角度将接口与实现分离开来:通过多态来消除类型之间的耦合关系,在Java中,多态也叫动态绑定,后期绑定或运行时绑定,那么什么是方法绑定? 方法调用绑定: 将一个方法与 ...