不一样的flag

是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 flag{} 提交

ida看伪C代码:

int __cdecl main(int argc, const char **argv, const char **envp)
{
char v3; // [esp+17h] [ebp-35h]
int v4; // [esp+30h] [ebp-1Ch]
int v5; // [esp+34h] [ebp-18h]
signed int v6; // [esp+38h] [ebp-14h]
int i; // [esp+3Ch] [ebp-10h]
int v8; // [esp+40h] [ebp-Ch] __main();
v4 = ;
v5 = ;
qmemcpy(&v3, _data_start__, 0x19u);
while ( )
{
puts("you can choose one action to execute");
puts("1 up");
puts("2 down");
puts("3 left");
printf("4 right\n:");
scanf("%d", &v6);
if ( v6 == )
{
++v4;
}
else if ( v6 > )
{
if ( v6 == )
{
--v5;
}
else
{
if ( v6 != )
LABEL_13:
exit();
++v5;
}
}
else
{
if ( v6 != )
goto LABEL_13;
--v4;
}
for ( i = ; i <= ; ++i )
{
if ( *(&v4 + i) < || *(&v4 + i) > )
exit();
}
if ( *((_BYTE *)&v8 + * v4 + v5 - ) == )
exit();
if ( *((_BYTE *)&v8 + * v4 + v5 - ) == )
{
puts("\nok, the order you enter is the flag!");
exit();
}
}
}

可以看到每次都将用户的输入存到v6里面,然后根据v6的值来调整v4和v5的值,输入1就让v4--   2就让v4++  3就让v5--   4就让v5++

下面这一段代码说明v4 和v5取值都必须在0~4之间:

    for ( i = ; i <= ; ++i )
{
if ( *(&v4 + i) < || *(&v4 + i) > )
exit();
}

关键在于这一段代码:

    if ( *((_BYTE *)&v8 +  * v4 + v5 - ) ==  )
exit();
if ( *((_BYTE *)&v8 + * v4 + v5 - ) == )
{

我们仔细看主函数的代码,发现v8是一直没有动过的,再仔细算一下  &v8 + 5 * v4 + v5 - 41 这个偏移量是 &v8-41 到&v8-17之间,也就是完全落在v3的25个值里面!

他的逻辑是 如果算出来&v8 + 5 * v4 + v5 - 41 这个偏移量对应的值如果是1就退出,否则继续,直到找到“#”这个值

所以这个题本质上是个走迷宫.........

纯手走的 答案是:222441144222

BUUOJ reverse 不一样的flag的更多相关文章

  1. BUUOJ reverse SimpleRev (爆破)

    SimpleRev SimpleRev(flag需加上flag{}再提交) 注意:得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数: unsigned __int64 Decry ...

  2. BUUOJ reverse 刮开有奖

    刮开有奖 这是一个赌博程序,快去赚钱吧!!!!!!!!!!!!!!!!!!!!!!!!!!!(在编辑框中的输入值,即为flag,提交即可) 注意:得到的 flag 请包上 flag{} 提交 拖到id ...

  3. [BUUCTF]REVERSE——不一样的flag

    不一样的flag 附件 步骤 例行查壳儿,32位程序,无壳儿 32位ida载入,shift+f12检索程序里的字符串,看到了如图标记的字符串,加上下面又上下左右的选项,估计是道迷宫类型的题目 将迷宫字 ...

  4. 【一天一道LeetCode】#7. Reverse Integer

    一天一道LeetCode系列 (一)题目 Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, ...

  5. leetCode(62)-Reverse Integer

    题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 clic ...

  6. leetcode:Reverse Integer 及Palindrome Number

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...

  7. BUUOJ [BJDCTF 2nd]elementmaster

    [BJDCTF 2nd]elementmaster 进来就是这样的一个界面,然后就查看源代码 转换之后是Po.php,尝试在URL之后加上看看,出现了一个“.“ ....... 迷惑 然后看了wp 化 ...

  8. bzoj3506 [Cqoi2014]排序机械臂

    bzoj3506 此题是一道比较简单的spaly题目. 用splay维护序列,将每个点排到对应的位置之后删除,这样比较容易区间翻转. 我的指针写法在洛谷上AC了,但在bzoj上RE. #include ...

  9. Word Reversal

    For each list of words, output a line with each word reversed without changing   the order of the wo ...

随机推荐

  1. Unicode规范中的BOM 和 ISO8891-1编码

    Unicode规范中的BOM Unicode规范中有一个BOM的概念.BOM——Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做" ...

  2. nodejs (下)(设置响应参数)

         响应: 可以自定义设置状态码(状态码范围内的):res.statusCode =  404; 修改响应头信息: res.setHeader('content-type','text/html ...

  3. maven报错1

    错误1 错误2 缺少mapper文件 错误3 缺少映射文件 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --> <build> <re ...

  4. Mockito 2 参数匹配器

    Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值.有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers). 请参考下面的 ...

  5. 51 Nod 1116 K进制下的大数

    1116 K进制下的大数  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数 ...

  6. 微信小程序简单的推送消息流程

    1.进入开发设置-消息推送,启用消息推送 url: 启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中. 2.创建消息模板. 3.WXML代码: 4 ...

  7. D. Make a Permutation!(思维)

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  8. HDU 5810 Balls and Boxes ——(数学,概率,方差)

    官方题解看不太懂,参考了一些人的博客以后自己证明如下: 其中D(X)和E(X)的公式如下(参考自百度百科): 其中 p = 1 / m .(这是每一个单独事件发生的概率期望,在这里单独事件指的是一个球 ...

  9. redis 持久化 RDB

    https://blog.csdn.net/u010028869/article/details/51792197

  10. Java 注解指导手册(上)

      编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它.   我们已经在Java Code Geeks提供了丰富的教程, 如Creating Your Own Java A ...