zoukankan      html  css  js  c++  java
  • 2020网鼎杯 白虎组reverse:hero

    主函数,当bossexist的值不为0时,while循环dround()函数,循环结束输出flag

     outflag()函数的flag值由6段数据拼凑而成

     while循环的dround()函数有三个选择,1随机获取coin硬币,2打龙,3商店由硬币兑换攻击值

    1.随机获取硬币函数:真的很随机,而且一次只有一两个

     2.打龙函数:攻击值(eff)大于1000000打死第一条龙,大于3000000打死第二条龙,大于5000000打死第三条龙,并且出flag。每打死一条龙都会自动解密一段flag

     

     3.商店函数:if判断coin硬币数量够不够,如果够就2个硬币充1点攻击值

     这道题获取flag和我们的输入没有关系,flag的解密很复杂是des,通过解密去算flag不科学,按照思路玩游戏要玩五百万次。

    其实这道题很简单,elf文件远程连接kali动态调试在if充值判断那里把flag寄存器的SF位置0就可以想充多少充多少了

    在if判断这里按tab键切换到汇编界面

     给js跳转F2下一个断点

    将ida文件夹dbgsrv目录下的linux_serverx64文件拷贝到kali,chmod 755 linux_serverx64给文件权限,然后./linux_serverx64运行程序,会自动监听23946端口

    在ida打开debug调试,选择Linux调试

    打开程序的调试设置

    设置如下,写入kali的ip地址,和登录密码,ok开启调试

     程序运行到js跳转那里把SF位置0,就可以成功充入任意攻击值了

     因为bossexist的值非0,所以while循环会继续,这时候选择2进入打龙函数打三次龙自动出flag

    另外,kali连接ida,先ping一下Windows主机看ping得通不,如果ping不同改网络设置,ping通了ida依然连不上kali,则kali关闭防火前,需要下载ufw工具关闭firewalld

  • 相关阅读:
    使用字符流(Writer、Reader)完成对文件的读写操作
    Java中File类重修
    适配器模式学习
    oracle 新建数据库 ,新建用户
    8.19 extjs jar 包使用。
    8.15 session 有效时间, session在数据查询中最后不用
    8.15 自定义tr行 滚动 信息行的滚动
    8.15jsp document 头部声明 区别
    8.14 图片滚动无缝
    8.13Oracle新建用户、角色,授权
  • 原文地址:https://www.cnblogs.com/blackicelisa/p/12905978.html
Copyright © 2011-2022 走看看