【Write-up】BUUCTF others_shellcode
checksec查看程序架构
$ checksec --file shell_asm
[*] '/home/peterl/security/workspace/shell_asm/shell_asm'
Arch: i386-32-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: PIE enabled
ida查看程序伪代码
然后我们看到它的getShell
函数:
我们看到它里面有一句很奇怪的__asm { int 80h; LINUX - sys_execve }
,这是干什么的?
我们按tab看一下它对应的汇编代码:
这里我们已经看出一点端倪了,没错,这一句就是内联汇编(内联汇编使用“__asm”(C++)和“asm”(C和C++)关键字声明)
具体可以看以下推文:
至于int 80
的作用,请参考我写的这篇writeup的第二个exp
构建exp
这题根本不需要exp,直接nc 网址 端口号
即可,程序会自动执行execve("/bin/sh", 0, 0)
这题的主要功能就是介绍int 80
的作用还有内联汇编