在pwn里面shellcode是什么?

shellcode是什么?

从字面意思上去理解,就是获取shell的代码。(这里的shell在pwn里面一般就是那个/bin/sh)

这就是一个shellcode的汇编形式

在做题目的时候我们的shellcode都会转成这样的形式

1
shellcode = "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"

比如我们碰到栈溢出漏洞的时候,虽然可以知道偏移量多少,就是输入几个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 协议 ,转载请注明出处!