JCTF2014 RE200

Author Avatar
kabeor 3月 31, 2019

JCTF2014 RE200

下载后的文件PE头有问题,放入WinHex
mark

DOS头的最后一个参数应该是指向PE头的位移,所以应该是E8,而PE头的起始位应该是50 45 00 00

修改以后保存,放入OD中,搜素字符串:

可以看到有个success应该就是成功的跳转

IDA打开

可以发现,要求输入9个数字,分别为v30-v38。 
要求:

v31 * v32 * v30 / 11 ==106
(v31 ^ v30) == v32 - 4
(v32 + v31+ v30)%100 ==34
v33==80
v34==94
v35==98

但是只需要前面三个数进行一个运算,满足相关条件,中间三个数为80 94 98,最后三个数无关,然后打印出flag只取前面三个数

#include <stdio.h>
int main( int argc, char *argv[] )
{
for ( size_t i = 0; i < 0x100000; ++i )
{
for ( size_t j = 0; j < 0x100000; ++j )
{
size_t k = (i ^ j) + 4;
if ( i * j * k / 0xb == 0x6a && (i + j + k) % 100 == 0x22 )
{
printf( "%d %d %d\n", i, j, k );
// return 1;
}
}
}
return(0);
}

15 6 13这一组是正确解

flag为

jlflag{15613abc}

From https://kabeor.github.io/JCTF2014 RE200/ bye

This blog is under a CC BY-NC-SA 4.0 Unported License
本文链接:https://kabeor.github.io/JCTF2014 RE200/