- 博客(183)
- 收藏
- 关注
原创 file struct 利用总结——百度杯总决赛线上赛try to pwn write up
简介file stream overflow是pwn的一种常用方法(至少最近几次比赛变得有点常用了),主要是通过利用libc的FILE结构体中的一些特点达到控制流劫持的效果。一般来说劫持控制流的方式主要是: 1. 更改栈上返回地址,这种方法在堆相关的利用和格式化字符串利用时需要知道栈地址,或者有栈溢出等方法,才能够更改到栈地址 2. 更改got表地址,这种方法在开启了full relro的时候就
2017-04-08 13:33:52 2125
原创 pwnable.kr brainfuck writeup
题目I made a simple brain-fuck language emulation program written in C. The [ ] commands are not implemented yet. However the rest functionality seems working fine. Find a bug and exploit it to get a
2017-03-28 14:07:48 1745
原创 0ctf 2017 babyheap writeup
前言坑比的我比赛的时候没有做。。第二天有课,赛后看了看,题目其实没啥太多难度,可能也就是细节上需要注意一下吧题目题目功能简单介绍一下题目功能,因为我本机是用的linux,ida在虚拟机里,ida的复制又不是特别方便,所以我就不复制分析的情况了,具体分析自己做一下练习一下也比较好,就把大致的情况说明一下。首先是主菜单===== Baby Heap in 2017 =====1. Allocate2
2017-03-26 15:47:43 6253 10
原创 堆相关漏洞利用libc异常提示原因记录
Memory Corruption (fast)原因size为fast bin范围。fastbin取出的chunk的size不属于该fastbinsmallbin double linked list corrupted原因size 为smallbin 范围。smallbin的最后一个被取出的时候发现不为double linked list。如拿出的那一...
2017-03-26 11:49:10 6733 2
转载 arch linux 使用postgres initdb 出现permission denied解决
直接搬一下整套方案:sudo mkdir /var/lib/postgres sudo chmod 775 /var/lib/postgres sudo chown postgres /var/lib/postgres sudo -i -u postgres [postgres]$ initdb --locale $LANG -E UTF8 -D '/var/lib/po
2017-03-23 11:34:29 3169
原创 0ctf-2016 pwn-warmup writeup
题目一个bin,知道的信息是flag 的路径https://github.com/ctfs/write-ups-2016/tree/master/0ctf-2016/exploit/warumup-2分析[anciety@anciety-pc warmup]$ file warmupwarmup: ELF 32-bit LSB executable, Intel 80386, version
2017-03-04 10:25:53 2657
原创 linux 堆溢出学习之malloc堆管理机制原理详解
前言在pwn的学习过程中,最为难啃的骨头莫过于堆相关的利用,然而无论是在实际情况下还是在ctf比赛中,堆利用都是绝对的主流,是漏洞的主要类型之一。鉴于国内相关资料有限,系统讲解堆溢出利用的更是少之又少,我在此整理相关内容,既能作为自己学习的记录,也希望能够给大家带来一定的作用,不过鉴于本人也在学习之中,如有错误希望大家包涵,并且能够积极指正。堆的基础知识什么是堆堆是一种全局的数据结构,用以动态管理系
2017-03-02 18:47:57 13000 2
原创 linux 堆溢出学习之house of spirit(2)
开篇本篇接上篇的house of spirit技术的学习,上篇我们翻译了这个技术来源的文章,这篇我们将通过实例和总结来进行一个更深入的了解house of spirit 简介攻击方式:结合栈溢出和堆溢出攻击效果:返回任意位置作为一个chunk攻击要求:可溢出控制某个malloc返回的地址被控制的地址被free再次malloc一个chunk可对第二次分配的chunk进行输入house o
2017-03-02 18:24:04 940
原创 linux 堆溢出学习之house of spirit(1) malloc maleficarum hos翻译
综述house of spirit是一种常用的堆溢出技术,而在如今的malloc实现中依然没有对这种方法进行保护,所以在目前还是一种有效的堆溢出技术。下面我们先从这种方法的来源之本讲起,即2005 Malloc Maleficarumcsdn原文 The House of SpiritThe House of Spirit is primarily interesting because of th
2017-03-02 10:37:52 2222
原创 scala implicit 关键字用法总结
综述implicit 关键字是scala中一个比较有特点的关键字,他保证了scala在很多时候没有一些不必要的代码冗余,使得scala在很多时候看起来更加简洁,同时使得scala的一些库在设计的时候,可以有更加直观的操作方法implicit function 隐式函数形式第一种implicit的用法,是将其加在function定义的前面,形式为:implicit def int2String(som
2017-02-28 11:18:38 5416 2
原创 ida postive-value sp导致不能使用hexray f5转c语言的解决办法
问题原因在ida中,f5中很重要的一个步骤就是分析sp的偏移值(相对偏移),以此决定栈帧的大小内容等具体情况,所以会设计到分析sp,如果sp出现positive-value 不能使用hexray f5,基本就是分析失败了,比如有一些函数的具体情况比较特殊,比如使用动态跳转代替了静态的跳转,导致分析上有一些错误。 所以我们需要进行手动修正问题解决打开options -> generals 中的分析sp
2017-02-26 23:41:10 920
原创 scala 中方法和函数的区别
定义函数类型:形式为(T1,…, Tn) => U,其实是FunctionN trait的简写形式,匿名函数和方法值具有这种类型(其实可以作为方法类型的一部分) 方法类型:一个非值类型(non-value type),里边是没有值的,一个方法值具有函数类型,用def定义。具体区别1.方法不能作为单独的存在,除非参数为空,函数可以def m(x: Int) = 2 * x这是一个方法,因为不能单独存
2017-02-21 14:53:35 6469
原创 scala def/val/lazy val区别以及call-by-name和call-by-value
结论defdef类似于每一次重新赋值,如果是用def定义函数,则是每一次重新获得一个函数val获得一次,并立即执行(严格执行)lazy val惰性执行,也就是赋值(绑定)的时候先不会执行,等到需要的时候再执行实验scala> def f = {println("hello"); 1.0}f: Doublescala> fhellores3: Double = 1.0scala> fhello
2017-02-21 14:16:10 4068
原创 9447 CTF 2015: Search Engine分析(未完待续)
题目https://github.com/ctfs/write-ups-2015/tree/master/9447-ctf-2015/exploitation/search-engine基本功能1: Search with a word2: Index a sentence3: Quit其中2用来添加一个句子,句子里的以空格隔开作为每一个单词,1输入单词,然后可以删除单词。功能实现具体代码我就不
2017-01-26 22:43:12 1096
原创 youcompleteme unavailable: no module named "future"解决
问题描述我用aur安装了youcompleteme,然后vim出现:youcompleteme unavailable: no module named future问题原因默认的python是py3,py3没有future,所以安装上future就好了问题解决sudo pip3 install future
2017-01-24 13:27:14 15038 2
原创 anaconda 使用matplotlib画图出现 could not find or load Qt platform plugin "" 解决
问题描述在使用ipython import pylab的时候(其实主要是import matplotlib.pyplot)的时候出现问题,提示为:This application failed to start because it could not find or load the Qt platform plugin "".之后abort问题原因我猜是qt不兼容还是什么玩意儿,反正就是得用an
2017-01-24 13:25:28 8159 4
原创 pep8 要求归纳
前言对pep8 的要求做一个简要的汇总,不保证包括所有内容,主要包括一些代码风格的要求,取其重点进行汇总。如果有时间将会尽力进行全部的翻译。代码布局缩进使用4个空格作为一个缩进层次当需要换行时,续行应该和所包含的元素垂直对齐或者使用悬垂缩进,也就是第一行不应该有任何参数,续行也应该有缩进来明确其作为一个续航。 例如:# 对齐foo = long_function_name(var_one,
2017-01-22 01:32:47 9834
原创 linux 0.11 version 启动代码分析(bootsect.s)
综述启动代码位于/boot/,包含三个文件,均为汇编编写/boot/bootsect.s启动扇区的代码,位于启动扇区,即磁盘的0磁道,0磁头,第一扇区,bios运行之后会跳转到0x7c00处执行代码,这一段的代码则是将位于0x7c00处等待执行的代码。!! SYS_SIZE is the number of clicks (16 bytes) to be loaded.! 0x3000 is 0
2016-12-29 19:05:15 548
转载 转载2005 Malloc Maleficarum(待翻译)
Date: Tue, 11 Oct 2005 10:14:02 -0700From: Phantasmal Phantasmagoria <[email protected]>To: [email protected]: The Malloc Maleficarum-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA1[---
2016-12-19 19:36:11 635
原创 linux 栈溢出学习之return_to_dl-resolve
符号动态解析原理符号解析一个可执行文件可能会包含外部符号,可以简单的理解为包含“库函数”。这些函数(符号),在运行的时候必须得知道他们的地址,一个可执行文件在装载的时候,即使其本身装载的位置是固定的,其“库函数”所在的文件的装载位置是不定的,但是又必须知道其精确地址才可以进行运行。所以,符号解析,即将外部符号的具体地址找到,包含两种方法:静态解析:在编译之后的链接过程中,将外部符号所在的共享库的整
2016-12-16 23:59:13 1279
原创 linux堆溢出学习之unsafe unlink
示例代码来源:https://github.com/Escapingbug/how2heap/blob/master/unsafe_unlink.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>uint64_t *chunk0_ptr;int main(){ printf("We
2016-12-10 14:29:44 3312 6
原创 CTF练习 TU-ctf-2016 pwn woO-50
题目简介大致是可以选择好几个动物,然后可以删除动物题目分析有了上一道题的经验,上来先afl[0x004007f0]> afl0x004006d8 3 26 sym._init0x00400710 2 16 -> 32 sym.imp.free0x00400720 2 16 -> 48 sym.imp.puts0x00400730 2
2016-12-07 11:05:54 1120
原创 CTF练习-TU-CTF-2016 pwn BBYS-first-elf-25 记录
题目简介太水了没啥好简介的,radare2打开(我用的linux,闲win虚拟机太麻烦一般懒得用ida)[0x080485c9]> iIhavecode truepic falsecanary falsenx truecrypto falseva trueintrp /lib/ld-linux.so.2bintype elfclas
2016-12-07 10:57:01 1118
原创 i3 dmenu 更改后台打开还是终端打开
~/.config/dmenu-recent/在该文件夹中有terminal和background,保存了对应模式下打开的软件的名字,进去删掉就可以重新选择了
2016-12-02 21:44:41 1313 1
原创 manjaro urxvt 复制粘贴方法
惊人的发现鼠标中键也可以用作复制粘贴! 而且和系统剪贴板,即ctrl+c ctrl+v不是同一个,他们互不干扰!于是urxvt就用这种方法复制就好了。。。中键粘贴,框选即复制,到其他程序中也可以用鼠标中键粘贴出来
2016-12-02 20:03:13 4635
原创 linux下fcitx部分窗口无效的问题解决
问题描述linux下部分窗口切换输入法正常,部分窗口切换输入法没有效果,无法输入中文,使用的是fcitx问题原因fcitx未安装好,需要再安装fcitx-gtk2或者fcitx-gtk3问题解决根据不同的发行版本,使用包管理工具安装这两个东西就好了
2016-12-02 19:49:32 2431
原创 volga-ctf-quals-2016 pwn web_of_scicen_250 writeup
基本情况我并没有参加这个比赛,只是作为练习用,所以无法模拟远程,只能本地调试文件是64位的,运行之后先输入名字,然后每次都会输出这个名字,然后问你10道数学题,后面怎样的其实对这个版本的利用来说不是很重要漏洞情况整个函数比较长,不过我还是复制下来方便解释(来源于radare2, 如果不依赖ida的F5, radare2一些时候比ida还好用,特别是在pwn当中):/ (fcn) sub.puts_7
2016-11-30 00:17:48 802
原创 某网盘android版过签名验证
简介某网盘整体上没有采用自家的加固,混淆程度还好,会有下划线和字母混淆,可是还不是很完整,关键的一些地方依然没有混淆,采取了本地签名验证的方式来避免重新打包,但是其实并没有什么用,最核心的部分没有混淆到.现象重新打包之后可以运行云盘,但是会跳出对话框,说当前运行在非官方版本下,然后点击确认就退出了分析思路签名更改后会跳出对话框,对话框中有文字,这里就是一个突破点了,在android killer中查
2016-11-14 11:00:19 521
原创 Android加固与脱壳学习之linux基础和抽取dex
文件系统暴露信息重要的几个文件系统包括: /proc/pid/maps 内存映射 /proc/pid/task 子线程 /proc/pid/mem 进程持有的内存,不可读 /proc/pid/cmdline 启动时相关 /proc/pid/status 进程状态1.可通过ps查看到pid 2.通过cat命令查看到proc文件系统对应的相关信息。 3.如果需要dump信息可以通过dd来达
2016-11-13 21:15:33 1452
原创 Android加固与脱壳学习之加固初步总结(1)
加固思想类比PE的加壳的加固思想,通过一段引导代码,即通过壳代码来解密,而源dex被加密后存储在一起的做法来进行加壳。加固方案1加固 http://blog.csdn.net/androidsecurity/article/details/8678399 实现 http://blog.csdn.net/androidsecurity/article/details/8809542 这种方案不
2016-11-13 20:36:13 849
原创 android inline hook 学习笔记
hook种类GOT表hook,通过更改GOT表offset来实现hookinline hook,即内部跳转hook,替换函数开始处的地址为跳转指令,跳转到hook函数比较而言, 1.GOT表对于本so文件中不经过GOT表 2.dlsym来调用的函数不经过GOT表android inline hook难点 - ARM模式和Thumb存在区别,不像x86,需要区分处理. - 跳转指令如
2016-11-13 19:56:32 2494
原创 libgdx moveTo action setDuration移动越来越快的解决方法
问题最近用libgdx写一个大作业,发现moveto action作用在actor上,actor会越走越快.问题原因网上没有搜到答案,查看了一下源码,发现TemporalAction类里的act是根据deltaTime和duration比较来确定当前移动多少,而我的deltaTime使用的是一直相加的deltaTime,但是因为他的计时是认为从执行action开始,deltaTime应该是为0的,所
2016-11-12 00:46:01 648
原创 The VirtualBox kernel modules do not match this version of VirtualBox 解决 (linux update,nvidia失败)
问题arch linux 下 upgrade之后发现kernel版本没有变?! sudo pacman -S linux安装失败?!virtualbox 打开告诉我kernel module do not match?!vbox的所有东西都找不到?!CC [M] /tmp/NVIDIA-Linux-x86_64-367.44/kernel/nvidia-drm/nvidia-drm-drv.o/
2016-10-31 00:35:43 3677 1
原创 arch linux gcc-multilib等32位兼容lib target not found 解决
问题arch linux gcc-multilib等32位兼容lib target not found (各种lib32-xxx等等)问题原因没有添加pacman的multilib支持问题解决sudo vim /etc/pacman.conf#找到[multilib],把这一行和它下一行的注释去掉sudo pacman -Syyu
2016-10-30 16:53:04 4423
原创 linux版010editor 破解
花了小半天时间搞了个破解。。思路一开始不太对 浪费太多时间了。 有需要的同学拿去用吧,用法就是你先下官方试用版的010editor,安装之后找到安装的位置,将010editor替换为010editor_cracked即可(记得把名字改回来,不然快捷方式可能用不了)下载地址 提取码mjxz
2016-10-29 14:28:20 4983
原创 (32位)arm 汇编学习(2)
条件码在指令中,有4位用来表示条件,也就是有16种条件。如果当前条件满足,则继续执行,否则这条指令将被忽略。结果标志主要是被数据操作指令设置和清除,这些指令只有在你强调其应该操作标志位的时候才会影响标志位,比如MOV不会影响标志位,但是MOVS(mov with set)就会设置标志位。接下来我们就要看一些指令条件,是通过在指令后面加上2个字母的后缀来表明的。AL(ALways)这个指令即表示总是,
2016-10-28 15:30:08 1269
原创 (32位)arm 汇编学习(1)
arm基础word大小4字节(32位,这里暂不考虑64位情况)内存arm使用26位内存地址值,也就是最多2^26或者说64m字节。需要注意的是,内存中使用4的倍数的地址,因为取值是基于word的。I/O输入输出设备被映射到内存中,没有独立的IO地址空间的概念。所以在ARM中,内存被分为RAM,ROM,IO设备3个区域寄存器ARM有16个32位寄存器,都可以被不加
2016-10-28 12:31:56 1366
原创 smali语法整理
数据类型smali的语法包括两种数据类型,基本类型和引用类型(这里和java一样),所有对象和数组是引用类型,其他为基本类型。基本类型基本类型由一个字母表示,他们在dex文件中也是通过这样的方式保存的,主要包括 类型 表示 备注 void V 这个类型仅用于返回值 boolean Z 布尔类型,包括true和false两种取值 byte B 字节类型,范
2016-10-28 11:21:50 1836
原创 android getActionBar返回null
问题使用getActionBar返回null#问题原因 可能是使用了android的兼容包#问题解决 将ActionBar替换为android.support.v7.app.ActionBar
2016-10-19 17:40:06 328
原创 android inflate之后findViewById返回null的解决方法
问题使用LayoutInflator进行inflate之后使用该layout xml下的id来findViewById出现null poiter exception问题原因setContentView之后使用findViewById是在当前layout之下找,当前layout找不到,于是就null了解决方法将使用inflate返回的view,view.findViewById()
2016-10-19 17:39:00 1644
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人