[SECCON Beginners CTF 2020] Beginner's Stack
Let's learn how to abuse stack overflow!
解説
ふつーのバッファーオーバーフロー問です
愚直にwin_addrに飛ばすとアライメントで怒られるのでsub rsp, 0x08 ; add rsp, 0x08 ; ret ;を途中に挟んでます
Let's learn how to abuse stack overflow!
ふつーのバッファーオーバーフロー問です
愚直にwin_addrに飛ばすとアライメントで怒られるのでsub rsp, 0x08 ; add rsp, 0x08 ; ret ;を途中に挟んでます
Do you like programming?
Did you know Return Oriented Programming?
Cのプログラムとソースコード、そしてlibc-2.27.soが配布されます
#include <stdio.h>
#include <unistd.h>
char *gets(char *s);
int main() {
char str[0x100];
gets(str);
puts(str);
}
__attribute__((constructor))
void setup() {
setvbuf(stdin, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
alarm(60);
}
明らかに自明なBuffer Overflowがあります
しかし、実行ファイルにはsystem()やsyscallがありません
また、NXビットが有効なのでshellcodeを実行することもできません
そこでROPとret2libcを組み合わせた攻撃をします
以下の手順で攻撃をします