Skip to content

Pwnable.tw orw

复制本地路径 | 在线编辑

需要掌握的知识点

代码分析

main 方法

int __cdecl main(int argc, const char **argv, const char **envp)
{
    orw_seccomp();
    printf("Give my your shellcode:");
    read(0, &shellcode, 0xC8u);
    ((void (*)(void))shellcode)();
    return 0;
}

很简单,似乎就是输入一段数据,然后将这段数据当做代码来执行

漏洞分析

Stage 1

分析代码,很简单哇。这连什么溢出都不需要了,直接在Read()函数调用时写下Shellcode就行。结果,哎..不行。

原来是在orw_seccomp()方法中调用了prctl(),这个函数对Execv()函数进行了屏蔽。

Stage 2

既然Execv()不可以,那就另辟蹊径,这里直接就说了把,就是利用open, read函数进行读取flag 文件,write函数写到标准输出就行。

总结

  • 经验
  • 有的时候execv()函数失败,查看是否使用了prctl()
  • 知识
  • prctl()的认识

Comments