• 2020网鼎杯白虎组re 恶龙 wp


    此次参加网鼎杯白虎组,虽然被虐的很惨,但仍然收获颇多,对于恶龙一题,作为逆向入门题目,还是非常不错的,记录一下。

    题目链接: https://pan.baidu.com/s/1Qsgyu1dUzJTymm5yTKQ9SQ 提取码: 1djs 

    首先在linux子系统中使用file hero 命令查看文件信息

    hero: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=5d43a21f3afe482b78a41a29648a070d01c0c2d9, not stripped
    

    确定是一个64位的执行程序。那么先使用ida简单分析下。

     通过执行程序和分析逆向伪代码,基本上确定程序是一个小游戏,给出三个选项。1是打小怪赚取金币,2是打boss,3是去商店使用金币兑换战斗力。

    从打BOSS的逻辑看出来,有3个BOSS,每一个的战斗力分别有1000000,3000000,5000000 ,题目提示不能patch,也就是不能修改怪的战斗力值,估计跟最后的flag有关。那么只能通过修改elf来完成。

     切换到汇编,分别在0x4015f9、0x40165c、0x4016bc处下断点。程序运行到那里修改eax的值即可。

    祭出gdb  gdb hero

    b *0x4015f9
    b *0x40165c
    b *0x4016bc
    

    按r执行程序。

     选择2

    断点生效后,输入

    set $eax=0xf4244
    c

    为什么是0xf4244?反正比0xf4240要大就可以了。

     第一头恶龙被打败了,那么继续打第二头。

     第二头打败了,提示解密另一部分flag,打第三头

     flag出来啦!

  • 相关阅读:
    LeeCode 1497. 检查数组对是否可以被 k 整除
    LeetCode 1503. 所有蚂蚁掉下来前的最后一刻
    双指针算法
    最短送餐路程计算, 美团笔试题2020
    最短路算法dijkstra算法
    寻找最小子字符串, 美团笔试题2020
    最大矩形, 统计全1子矩阵
    拼凑硬币, 腾讯
    7月15日
    7月14日
  • 原文地址:https://www.cnblogs.com/hackcat/p/12910758.html
Copyright © 2020-2023  润新知