lab1

作者: n0va | 来源:发表于2019-01-20 12:45 被阅读0次

方法1:逆向破解,因为题目给了.c文件,里面有key和cipher可以直接用

key = "Do_you_know_why_my_teammate_Orange_is_so_angry???"
cipher = [7, 59, 25, 2, 11, 16, 61, 30, 9, 8, 18, 45, 40, 89, 10, 0, 30, 22, 0, 4, 85, 22, 8, 31, 7, 1, 9, 0, 126, 28, 62, 10, 30, 11, 107, 4, 66, 60, 44, 91, 49, 85, 2, 30, 33, 16, 76, 30, 66]
flag = ""
for i in range(len(cipher)):
    flag += chr(cipher[i]^ord(key[i]))
print flag

方法2:利用gdb动态调试,可以在已生成password且未输入magic的情况下获得password的值:

在0x80486e7处下断点,可以看到ebp - 0x80就是password存放的地方
► 0x80486e7 <get_flag+332>    lea    eax, [ebp - 0x80]
  0x80486ea <get_flag+335>    push   eax
  0x80486eb <get_flag+336>    push   dword ptr [ebp - 0x74]
  0x80486ee <get_flag+339>    call   read@plt <0x8048410>
再运行到0x8048712处,可以查看 ebp - 0x80的值 
pwndbg> x/wx ($ebp -0x80)
0xffffcd08: 0x4f77e43c
转成十进制,输入就能得到flag
pwndbg> c
Continuing.
1333257276  
CTF{debugger_1s_so_p0werful_1n_dyn4m1c_4n4lySis!}[Inferior 1 (process 7593) exited normally]

方法3:
同样利用gdb调试,但是这次不用获取password的值而直接在if跳转前设置eip的值指向flag输出的for 循环即可

image.png image.png

相关文章

  • Git的详细用法及其原因解释(CS 61B)

    https://sp18.datastructur.es/materials/lab/lab1/lab1

  • 无标题文章

    # Computer Network Lab1

  • 2.MLP构建、前向、反向

    %matplotlib inline Lab1 - Multilayer Perceptrons In this ...

  • #Readme

    Install DOL in Ubuntu 14.04 in lab1 Description(DOL 框架描述)...

  • MIT6.824分布式系统的正确食用方式(lab1.MapRed

    hello,我就以做lab1的流程为目录,记录一下我做lab1的时候收获的和容易出错的地方。 1.阅读MapRed...

  • OS实验课程设计

    Lab1: bootloader / interrupt / device driver 启动OS的bootloa...

  • MIT6.828-2018-Lab1

    Lab1这一节并不需要写代码,需要了解相关概念和指令,为后续的Lab打基础 Lab1:启动PC Part 1: P...

  • Lab1

    清华实验lab1 本markdown遵循markdown plus与简书与Typora编辑器规则 若需要使用目录,...

  • lab1

    首先这题有挺多做法的,先从简单的说起吧,逆向做法,直接上脚本 第二种常见的pwn做法,gdb调试找password...

  • Lab1

    MIT 6.828 Lab1笔记 PART 1: PC Bootstrapr 这一部分主要是实验环境的配置,跟随教...

网友评论

      本文标题:lab1

      本文链接:https://www.haomeiwen.com/subject/nirxjqtx.html