orw ---- pwnable.tw

2018-12-31  本文已影响0人  少年_DayJun

链接见标题。

作为一个新新手,看到第一行的时候就开始感到诧异,为什么题目会给出flag的路径呢。

接下来看第二句,说只有openreadwrite这三个系统调用可以用。

现在还是一头雾水,那么下载下来看看吧。

RELROStack的保护。这两行是什么意思呢?

RELRO:

RELRO会有Partial RELRO和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表

Stack:

如果栈中开启Canary found,那么就不能用直接用溢出的方法覆盖栈中返回地址,而且要通过改写指针与局部变量、leak canary、overwrite canary的方法来绕过

from link  作者:HacTF

用IDA打开,并F5:

逻辑大概就是,主动读取shellcode,然后主动执行这个shellcode。

这么直接??我试了试直接注入,结果失败。这时视线转到orw__seccomp()这个函数上。我们搜索一下seccomp是什么。

seccomp 是 secure computing 的缩写,其是 Linux kernel 从2.6.23版本引入的一种简洁的 sandboxing 机制。在 Linux 系统里,大量的系统调用(system call)直接暴露给用户态程序。但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。seccomp安全机制能使一个进程进入到一种“安全”运行模式,该模式下的进程只能调用4种系统调用(system call),即 read(), write(), exit() 和 sigreturn(),否则进程便会被终止。

from link  作者:你身边的那个TA

ok,现在我们就理解了题干的“只有open,read和write这三个系统调用可以用。”是为什么了。

题目已经给出了一个flag的路径,所以我们只需要将shellcode写成对open,read和write的调用就行了。

那么现在难题又来了,这shellcode该如何调用呢?我们之前只会复制粘贴啊?

不会就学啊!link

或者看别人的wp:)  link

还有个选择,学一下pwntools的shellcraft  link

然后把shellcode注入就可以了。

flag = FLAG{sh3llc0ding_w1th_op3n_r34d_writ3}

上一篇 下一篇

猜你喜欢

热点阅读