在pwn里面shellcode是什么?
shellcode是什么?
从字面意思上去理解,就是获取shell的代码。(这里的shell在pwn里面一般就是那个/bin/sh)
这就是一个shellcode的汇编形式
在做题目的时候我们的shellcode都会转成这样的形式
1 |
|
比如我们碰到栈溢出漏洞的时候,虽然可以知道偏移量多少,就是输入几个a,但是我们不知道/bin/bash的地址,比如一个常见的payload是这样的payload=’a’*140+p32(0x080234)
我们知道用140可以覆盖掉返回地址,但是呢我们不知道后面的0x80234这东西是多少,主要原因是我们找不到/bin/bash,这时候我们就要用shellcode了,即获取shell(/bin/sh)的代码
如何写shellcode?
首先要做的是找到一个空地址,并且可以有权限操作
就是我们在程序里面找函数啊这些东西,然后看看有没有哪个地址的值是空的,如果某个地址的值是空的,那么我们就可以把/bin/bash指向这个地址了。然后去看一下那个变量属于什么段,并且看一下那个变量的权限有多大,够大的话,就行了
这样的话我们就把这个地址当成/bin/bash的地址,那么shellcode我们还要写,大概这个东西就是将这个地址和/bin/bash连接上吧
shellcode有几种方法写,一个是自己写汇编代码(这个比较难),一个是去网上找别人写的,另一个是通过pwntools直接使用
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!