pwntools

Kali安装备忘

孤人 提交于 2020-12-25 20:06:18
Kali版本 对CTF来说,Kali的直接Root用户登陆肯定是最方便的。2020版本安装时还要设置一个普通用户名,背叛了Geek的精神!而且2020没有Light版本,只能网络安装或下载全版本的ISO文件,简直多余,因此最优是2019.4的light 虚拟机 VMware至少要用15版本的,不然在高分屏下的显示非常小。15可以进行屏幕拉伸,Kali安装完成后,还可以在setting-display等地方设置分辨率、缩放因子等。最为方便的是安装VMware tools后,可以双向复制粘贴、目录共享。 Visualbox使用起来不太方便,只能“分离启动”就不提了,关键是安装增强工具后,也不能完成目录共享,折腾了很久的 mount -t vboxfs ...... ,最后放弃。 软件安装 安装后要把系统源、PIP改到阿里云,然后apt update,随后还要安装 aptitude,在apt下无法安装的gcc等可以通过aptitude完成。根据pwn的需要主要安装的工具有upx、gdb(及peda插件)、pip、fcrackzip、java、netcore、php、uncompyle6等。据说edb是linux下不错的调试器,以后再试。 相当长时间内不要考虑的是pwn相关的内容,如:pwntools、Metasploit。 相反逆向移动开发相关的内容可以后续跟进。 来源: oschina

简单shellcode学习

僤鯓⒐⒋嵵緔 提交于 2020-11-24 06:31:24
引言 之前遇到没开启NX保护的时候,都是直接用pwtools库里的shellcode一把梭,也不太懂shellcode代码具体做了些什么,遇到了几道不能一把梭的题目,简单学习一下shellcode的编写。 前置知识 ◆ NX(堆栈不可执行)保护 ◆ shellcode(一段16进制的数据,转化为字符串则为汇编代码) pwnable之start 保护检测 可以看到这道题目什么保护都没有开 ida分析 题目只有start函数,可以知道该题是用汇编语言写的,顺便可以锻炼一下自己看汇编的能力 汇编代码分析 简单来说,程序调用了wirte函数去打印字符,接着调用read函数输入,但是这里的输入没有限制,因此有一个栈溢出的漏洞,而且程序有个特定,他将esp的值首先压入了栈中,esp存的是栈顶的地址,使得我们能够找到栈的地址,为我们返回shellcode做准备 push esp #将esp寄存器的值压入栈中,这里可以获得栈的地址 push offset _exit #将_exit函数地址压入栈中,使得start函数执行完毕时返回exit函数 xor eax, eax #清空eax寄存器的值 xor ebx, ebx #清空ebx寄存器的值 xor ecx, ecx #清空ecx寄存器的值 xor edx, edx #清空edx寄存器的值 push 3A465443h push 20656874h

蓝帽杯2020 | 三题 MISC Writeup

别来无恙 提交于 2020-08-09 11:41:19
来自战队:@驴肉火烧 签到 附件下载 题目给出一张图片,提示观色,预计可能是将信息隐藏在某一色道中或 LSB 隐写 将给出的图片导入 StegSolve.jar,在 red plane 1 中发现半个 flag 利用 Frame Browser 对图片进一步分析可以分离出第二张图片, 同样在 red plane 1 中发现另外半个 flag 熟悉的解密 附件下载 附件压缩包里面是一个文本文件,很明显是数行用 base64 编码的字符串 写如下脚本进行解码: import base64 f1 = open('1.txt', 'r') f2 = open('2.py', 'w') line = f1.readline() while line: str = base64.b64decode(line).decode('utf-8') f2.write(str) line = f1.readline() f1.close() f2.close() 得到: #!/usr/bin/env python #-*- coding: utf-8 -*- import sys from ctypes import * def encipher(v, k): y = c_uint32(v[0]) z = c_uint32(v[1]) sum = c_uint32(0) delta =

Linux下pwn从入门到放弃

*爱你&永不变心* 提交于 2020-08-09 02:22:21
Linux下pwn从入门到放弃 0x0 简介 pwn,在安全领域中指的是通过二进制/系统调用等方式获得目标主机的shell。 虽然web系统在互联网中占有比较大的分量,但是随着移动端,ioT的逐渐流行,传统的缓冲区溢出又一次有了用武之处 0x01 工欲善其事,必先利其器 Linux下的pwn常用到的工具有: gdb:Linux调试中必要用到的 gdb-peda:gdb方便调试的工具,类似的工具有gef,gdbinit,这些工具的安装可以参考: http://blog.csdn.net/gatieme/article/details/63254211 pwntools:写exp和poc的利器 checksec:可以很方便的知道elf程序的安全性和程序的运行平台 objdump和readelf:可以很快的知道elf程序中的关键信息 ida pro :强大的反编译工具 ROPgadget:强大的rop利用工具 one_gadget:可以快速的寻找libc中的调用exec('bin/sh')的位置 libc-database: 可以通过泄露的libc的某个函数地址查出远程系统是用的哪个libc版本 0x02 检测elf的安全性: (1)拿到efl,首先要用checksec来检测elf运行于哪个平台,开启了什么安全措施,如果用gcc的编译后,默认会开启所有的安全措施。 【1】RELRO

mac安装pwntools(python3.8)解决多数问题

与世无争的帅哥 提交于 2020-05-05 12:45:30
mac安装pwntools(python3.8)解决多数问题 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 安装pwntools 贴一下官方文档地址 http://docs.pwntools.com/en/stable/install/binutils.html#mac-os-x 采用 homebrew 安装 brew install pwntools 一顿等待之后 配置python 进入python目录 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages 创建mypath.pth 把下面的这段话写上去 /usr/local/Cellar/pwntools/4.0.1_1/libexec/lib/python3.8/site-packages 发现有错误,提示我们安装binutils 安装binutils export ARCH='amd64' brew install https://raw.githubusercontent.com/Gallopsled/pwntools-binutils/master/osx/binutils-$ARCH.rb 还是报错,是因为地址的问题,改动了一下 brew