前提・実現したいこと
picoCTF2019のhandy-shellcodeという問題を解いていたところ、以下のようなソースコードが提示されました。
その中の、
C言語
1((void (*)())buf)();
という部分が具体的にどのようなことをしているのかが分かりません。
該当のソースコード
C言語
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4#include <unistd.h> 5#include <sys/types.h> 6 7#define BUFSIZE 148 8#define FLAGSIZE 128 9 10void vuln(char *buf){ 11 gets(buf); 12 puts(buf); 13} 14 15int main(int argc, char **argv){ 16 17 setvbuf(stdout, NULL, _IONBF, 0); 18 19 // Set the gid to the effective gid 20 // this prevents /bin/sh from dropping the privileges 21 gid_t gid = getegid(); 22 setresgid(gid, gid, gid); 23 24 char buf[BUFSIZE]; 25 26 puts("Enter your shellcode:"); 27 vuln(buf); 28 29 puts("Thanks! Executing now..."); 30 31 ((void (*)())buf)(); 32 33 34 puts("Finishing Executing Shellcode. Exiting now..."); 35 36 return 0; 37}
試したこと
https://teratail.com/questions/181805
なども読みましたが、よく分かりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/16 08:42
2020/06/16 08:46
2020/06/16 08:48