[WP]BugkuCtf - pwn2

时间:2021-06-05 21:27:05

1.首先运行一下该程序

[WP]BugkuCtf - pwn2

2.我们权限不够于是去修改一下权限(改前,改后)

[WP]BugkuCtf - pwn2

[WP]BugkuCtf - pwn2

3.改后我们重新运行一下(123是输入的语句)

[WP]BugkuCtf - pwn2

4.拖进IDA,查看字符串,此处应该就是得到flag的地方

[WP]BugkuCtf - pwn2

5.之后我们查看main函数,并没有我们刚才所看见的那句话

[WP]BugkuCtf - pwn2

6.而在get_shell函数中我们看到了

[WP]BugkuCtf - pwn2

7.我们不难发现是这是一个栈的溢出后将程序返回到这个地方我们就可以得到最终的flag,而get_shell函数的起始点为400751,(然而wjc同志逼迫我用GDB)

[WP]BugkuCtf - pwn2

8.查看这个程序是否有栈的保护,(并没有)

[WP]BugkuCtf - pwn2

9.用gdb打开这个文件,并让程序来到输入的地方

[WP]BugkuCtf - pwn2

[WP]BugkuCtf - pwn2

10.打开一个新的终端来生成100个字符

[WP]BugkuCtf - pwn2

11.将这100个字符输入到程序中,使栈溢出

[WP]BugkuCtf - pwn2

12.之后我向上翻,找到了get_shell函数的位置

[WP]BugkuCtf - pwn2

13.之后写那个shellcode还太菜不会写,不过我找了另一个方法,首先我们看那个STACK栈的区域,第一条是oaaa…,而我们输入进去的100个字符每四个为一组,这这个栈目前保存了11组,即44个字符,也就是说另外56个字符是填满了ret后面的区域,之后我们便能写出解题的答案了,首先将56个字符填入,之后将将这个get_shell函数的地址输入进去即可

[WP]BugkuCtf - pwn2