Online Judge Security - hahabox0

為什麼上高中電腦課時都要寫些無趣的 code 來當作成績, 有沒有什麼方法用有趣的方法 讓題目一次刷完。 無聊的高中生把各種 online judge 當作 CTF 在打, 利用各種手法讓 OJ 製造一個後門, 從簡單的 execv 到 seccomp bypass 甚至是 sandbox escape, 讓你玩轉 OJ 把題目 AK 後再被電腦老師死當。

目標聽眾

對於資安有興趣的初學者(?

先備知識

看的懂基礎的 C 語言以及 shellcode

歡迎大家來到SITCON 2021 ヽ(✿゚▽゚)ノ
共筆入口:https://hackmd.io/@SITCON/2021
手機版請點選上方 按鈕展開議程列表。

請從這裡開始

如果Online Judge沒做防護的話

#include <stdio.h> #include <unistd.h> int main(int arg, char **args) { char *argv[] = {"cat", "/etc/password", NULL}; char *envp[] = {0, NULL}; execve("/bin/cat", argv, envp); }

直接cat password拿到帳號資料

實際情況

  1. time limit
  2. 無法持續連線
  3. 權限很小
Select a repo