从0到1编写shellcode
文章首发于先知社区从0到1编写shellcode
摘要在c语言中我们使用的MessageBoxA函数,其实存放在User32.dll动态链接库中,它是一个windows API函数
当c语言在链接时,它会将源文件中的代码、库函数等链接在一起,生成最终的可执行代码,形成可执行程序
当程序运行时,操作系统会加载程序所需的动态链接库到内存中,而User32.dll中的MessageBoxA函数也被放在了内存中的一个位置,供给程序使用
硬编码shellcode硬编码shellcode是直接通过地址调用相应API函数的一段16进制机器代码
例如:User32.dll中的MessageBoxA函数的内存地址我们知道,直接使用,这就是硬编码
先使用C语言编写一段弹窗程序,并修改visual stdio配置,能够让程序可以在xp的电脑上运行
c语言弹窗#include <Windows.h>int main() { MessageBoxA(NULL, "ming", "test", MB_OK | MB_ICONINFORMATION); ...
阿里云服务器创建镜像虚拟机
阿里云服务器创建镜像虚拟机前言 笔者拥有一台阿里云服务器,前不久将服务器打包了镜像,并通过vmware部署到了本地,遂有了此篇使用教程
创建镜像首先在实例处创建自定义镜像
导出镜像创建完成在https://oss.console.aliyun.com/bucket创建一个Bucket(ECS在杭州就创建杭州的Bucket,在上海地域的ECS就创建上海的Bucket,一致时才能导出镜像)
创建后就导出镜像
点击授予ECS对OSS存储筒的访问权限
OSS存储筒中便有raw压缩包
之后便可以下载raw压缩包文件了
raw格式转vmdk下载后的raw文件要转为vmdk文件
使用qemu将system.raw文件转换为vmdk文件,输出为system.vmdk
部署vmware虚拟机
使用vmdk文件作为磁盘文件
修改密码启动之后不知道为什么密码不正确
重启虚拟机,在引导时摁e键
将linux这行修改ro改为rw init=/bin/sh
ctrl X进如单用户模式
passwd root修改密码
exec /usr/sbin/init重 ...
Book
Book编码base64
Sqlmap首先要找的就是测试注入的函数
Sqlmap的主函数首先执行了一些函数
dirtyPatches对http responses设置了最大长度,后如果是windows系统,导入wininetpton,做一些编码处理(解决了windows与其他系统上执行的buf)
resolveCrossReferences进行函数传递(不清楚为了什么,感觉没有这个函数代码也可以)
checkEnvironment提了一下当前函数路径,进行了一下python的版本比较
setpaths进行了文件路径设置
banner函数输出Sqlmap特征
args = cmdLineParser()进行变量的赋值
传参-u看一下,执行过后args是一个带有键值的字典变量
initOptions也是定义了一些参数,_setConfAttributes定义conf字典变量,_setKnowledgeBaseAttributes定义kb字典变量
后_mergeOptions也是定义一下参数,通过for循环将args变量中的数据传递给conf
后续又进行一些变量的赋值函数等 ...