buuctf刷题记录17 [GUET-CTF2019]number_game

27 篇文章 0 订阅

ida打开进入主函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12dPQcWS-1596277028421)(D:\markdown\文件\图片\7.9.1.png)]

先看第一个if里面的函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I8hcjh02-1596277028423)(D:\markdown\文件\图片\7.9.2.png)]

首先是判断输入长度是否为10,然后逐个检查输入的字符是否是在0到4之间

然后我们看主函数中第二个if里的函数sub_400917

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCb0vySf-1596277028425)(D:\markdown\文件\图片\7.9.3.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agfdr0sT-1596277028426)(D:\markdown\文件\图片\7.9.4.png)]

自己看没看懂…看了看别人的wp才知道这是个数独游戏(第一次接触这种题),这个是个5*5的数独游戏其中行和列都不能有重复的

14#23
30#1#
0#23#
#3##0
42##1

就是这个样子,不考虑中间那些函数,我们应该输入0421421430,输入以后不对,应该是中间的函数做了某些调换或者其他操作

然后,sub_400758,sub_400807里面都是递归函数,看不明白,又看网上的大佬wp发现可以用动调来判断他这个调换的位置,然后自己又重新设置了一遍ida的远程调试…

这里输入0123456789来方便判断他调换的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eBoGtGOL-1596277028428)(D:\markdown\文件\图片\7.9.5.png)]

在这个地方下断点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxLLOW7y-1596277028428)(D:\markdown\文件\图片\7.9.6.png)]

修改z标志位使其可以执行下面的代码(因为输入的字符范围不对嘛)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WjiDBHH-1596277028430)(D:\markdown\文件\图片\7.9.7.png)]

继续执行到第二个if

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h7YfE0jQ-1596277028431)(D:\markdown\文件\图片\7.9.8.png)]

双击v7查看v7(就是调换后的顺序)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RHQAa4Eh-1596277028431)(D:\markdown\文件\图片\7.9.9.png)]

得到这样一个对照表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E2SRhNZI-1596277028432)(D:\markdown\文件\图片\7.9.10.png)]

又之前输入后转变的是:0421421430

#include <stdio.h>
int main()
{
    char arr[] = { 48, 52, 50, 49, 52, 50, 49, 52, 51, 48,0 };
    int i,biao[] = { 7,3,8,1,9,4,0,5,2,6 };
    char input[11] = { 0 };
    for (i = 0; i < 10; i++)
        input[biao[i]] = arr[i];
    printf("flag{%s}", input);
    return 0;
}

得到flag为: flag{1134240024}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值