近期理财经验总结

去年开始买的宝宝类的货币基金,余额宝、微信理财通和百度利滚利都买了点,后来对比了很长一段时间,发现还是百度利滚利最合适,利率最高不说,最关键的是可以不分工作日非工作日20分钟取现到账,所以目前基本上日常生活所需的闲钱都放在这里。

今年初开始,货币基金收益越来越低,于是依据周边可以得到的信息,关注了炒白银、股票和p2p三种方式。对比了一下,发现还是p2p最合适,白银需要太强的专业知识和市场敏感,股票太黑了,p2p虽说不时有小平台跑路的现象,但是目前看,选个大点的靠谱点的平台应该问题不大。

结合朋友推荐和自己网上查阅信息,目前选了p2p四个平台:有利网红岭创投人人贷,还有我个人强烈推荐的汇通易贷(点击带下划线文字可进入带有我推广链接的注册地址,默认推荐人henryliu911,都会有奖励)

我平时查p2p信息主要上的是网贷之家。之所以推荐汇通易贷,是因为在网贷之家评级里,他的透明度评分是最高的,然后相对其他三个平台,标比较容易抢到,收益也比较高(最高20%的利,扣除收益10%的管理费,实际到手最高能到18%),新用户充1000还送VIP,送完VIP据说可以全额担保。

有利网我也投了一些,收益不如汇通的高,但是听周边的朋友的说,这家公司更大,都几轮融资了,很靠谱。

剩下两个都注册了账号,但是总抢不到标,伤心了。。

还是想投白银的其实,但是专业术语太多了,什么平仓啊乱七八糟的,不能说人话么?而且近期貌似白银跌得很凶的样子

弱X博士一枚,平时助研费奖学金神马的太不够花了。倒是借此时机锻炼了理财能力,哈哈~

IE UAF 分析技巧

按照吴石的说法,维护团队的更替导致近期IE漏洞汹涌流出。以往一个IE漏洞提交给Microsoft以后,其维护团队会构造类似的模板对所有类fuzzing一遍,试图挖掘所有此模式的漏洞并修复。由于人员变动,fuzzing工作被搁置了,民间个体抓住机会,依据一个漏洞构造模板找到大量同类漏洞。

手头拿到几个IE 0day要分析,看看是不是有利用的可能。虽然接触听闻很多年,真正深入的分析UAF还算是初出茅庐。调试工具方面,Immunity Debugger还是歇歇吧,微软主场必须Windbg,何况mona也支持它。为了简化配置,以及酷炫背景的需求,下载一个主题是非常有必要的。当然Windbg本身并不支持主题的导入,只能导入注册表文件来达到酷炫黑的目的,详情可参考这里

堆出现的问题,无论是Heap Overflow 还是 Use After Free,开启hpa和ust总是好的:

gflags -i iexplore.exe +hpa +ust

其次,IE的多进程和ASLR也很麻烦,关闭之:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]
"MoveImages"=dword:00000000

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain]
"TabProcGrowth"=dword:00000000

崩溃时(由于分页堆的作用,指针会指向未分配的内存,或者说是已经释放的内存),此时

!heap -p -a address

可以查看该内存对应的堆释放或申请的记录。假设,该内存释放由exeCommand导致,且释放前调用了MSHTML!CTreeNode::Release。为了清晰记录内存的变化,可以增加如下断点:

bu MSHTML!CDocument::execCommand ".printf "execCommand: %mu",poi(esp+8);.echo;g"
bu MSHTML!CTreeNode::Release ".printf "CTreeNode::Release";.echo; bu kernel32!HeapFree ".printf \"Freeblock: 0x%08x\",poi(esp+c);.echo;bc 2;g" ;g"

这样根据输出信息,可以判断目标内存是由哪个execCommand导致的释放,在我手头的几个例子导致了释放和使用都是同一句话,无法利用

折腾是一种病

打从两年前因故重操高中就已很少涉及的装机的旧业后,世界开始变得不再消停。USB live,USB persistent,UltraISO,lili,Unetbootin… 安好系统,装驱动,打补丁,面前的主机如戈麦般倒下,曾经高潮迭起的过程也从惊悚浪漫变得世故油条,直到真正的对手来临…

这一年,不知刷了多少遍android,win7,以及偶然间洞悉mac的UEFI启动玄机,冥冥间还以为已是十步杀一人、千里不留行的侠客,实则桎梏、慵懒的思路早已经吞噬了大半个心野

Alienware M17入手前的几天,频率失衡的心跳似乎就预示着喜悦外的不祥征兆,比眼皮跳来得更没底。15999的价格居然买到了24599的配置,究竟是京东送错了还是想给我个惊喜~ (其实28999的从国外代购也只需要12000而已,但还是觉得捡了便宜)

M17是GTX 780M的显卡,用GPU做hash crack是exploit-db上看到cuda compute起就魂牵梦绕的技术丘陵,掠过去插个旗是一直的心愿。惯性思考和潜意识自大导致刚入手就格了个透彻,直到装好后AlienFX没法调节键盘灯光才捶胸顿足。先前做个驱动备份再重装不是省很多时间吗~何必劳神苦思,代百司之职役哉~

M17周一到,周三开始进入梦魇,每天反复尝试各种驱动和解决方案试图开启AlienFX。另一方面利用SSD的剩余100G开始安装kali,由于全部是3.0的USB口,不能直接安装系统,需要先进入live的系统界面,然后再安装系统

  • level 1 (pass): 进行到grub部分,无论如何都报错,后来才知道是网上文章妖言惑众,正确做法是要在安装过程中网络镜像部分选择yes

为了能开机启动kali,同时不破坏windows,grub需要装在kali所在的分区,而不是mbr,最后切回windows,用Easybcd增加启动项到开机的引导菜单,kali安装完毕

折腾、纠结、抑郁得想寻死的显卡驱动安装部分到了

按照kali官网的教程,显卡并没有如约而至的让oclhashcat工作。每天上班都在查新的可行方法,晚上回家就开始继续重装系统,试行各种显卡驱动解决方案,直到午夜时分,精尽人亡地进入梦乡。

随着时间流逝,最初的热情和自信已经慢慢被模糊的眼前路给消磨尽了。周五进入了GC,完全就是行尸走肉了,只有眼前路没有身后身:见到人不愿意说话,经理给发的样本也不想分析,想找个One and One story类似游戏,竟然自己就开始玩上了,直到下班。好在意外发现AlienFX已经正常,稍微平衡了极度扭曲的心

  • level 2 (bypass):曾想要装个ubuntu什么的,结果发现USB live干脆因为是3.0根本进不去,打算分个小区在硬盘上作为ubuntu的安装盘,结果不慎使得mbr被覆盖了。于是又fork到了解决修复mbr的深渊中,直到下载了包含diskgen的win7pe系统,设置启动盘为在win7分区前100m左右的小分区,才算是恢复了。遂决定还是不折腾ubuntu了,专心kali吧

退而求其次,打算bios里面禁用集成显卡,只保留nvidia让事情简单化,结果发现Alienware的显卡并不支持在bios禁用,是用FN+F5完成显卡切换。终于事情变得有眉目了~简断截说,正确的显卡驱动安装做法如下:

  • UltraISO制作kali的live usb
  • SSD空出来100G给kali
  • 安装kali时候选择安装到剩余的空间,开启网络镜像,grub不装到mbr
  • 进入windows,Easybcd增加引导菜单项目
  • 进入kali,修改/etc/apt/sources.lst文件,把源都替换为mirrors.ustc.edu.cn
  • 使用kali官方文档中的方法禁用nouveau的显卡驱动
  • 从nvidia官网下载驱动,ctrl+alt+f6进入tty6,service gdm3 stop停止x
  • 安装驱动

看看下图的计算对比,aircrack用8个cpu线程计算和cudaHashcat使用gpu计算,~5000和~20000

周六晚上终于消停地看了《等风来》,王灿的人生格言【别瞎折腾,没什么用】。但,折腾不是为了用,是一种病,得治

Android下的dropbear编译

dropbear是ssh的一个实现,包含了客户端和服务端以及相关的配置组件

Android下没有包含/etc/passwd等目录结构,并不能直接使用dropbear建立ssh服务

修改及编译过程如下:

安装交叉编译环境

下载0.52版的dropbear

  • 下载dropbear0.52-android.patch到源码上层目录
  • 切换到dropbear的目录执行:
  • patch < ../dropbear0.52-android.patch

准备编译

./configure --host=arm-none-linux-gnueabi 
--disable-zlib 
--disable-largefile 
--disable-loginfunc 
--disable-shadow 
--disable-utmp 
--disable-utmpx 
--disable-wtmp 
--disable-wtmpx 
--disable-pututline 
--disable-pututxline 
--disable-lastlog 
CC=arm-none-linux-gnueabi-gcc
export STATIC=1 MULTI=0 CC=arm-none-linux-gnueabi-gcc SCPPROGRESS=0 PROGRAMS="dropbear dropbearkey scp dbclient"
make strip

生成的dropbear可以理解为就是sshddbclient就是ssh
建立ssh服务

dropbearkey -t rsa -f /system/etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /system/etc/dropbear/dropbear_dss_host_key
dropbear -A -N <username> -C <password> -E

SSH内网穿透

故事的始末追溯到2011年,研一末那次ISCC。全队披荆斩棘获得了网关的Shell,但是继续探身进入内网就卡住了。虽然都多少了解一些端口转发的知识,但实际操作似乎又都没经验可谈。Jarett提出用 SSH -D 搭建sock代理,但最后仓促的结果并不佳。赛后总结时,我誓弄清楚SSH端口转发的前因后果。可惜两年光景匆匆呼啸,也没能运筹帷幄出片刻给它

这一周单位其他部门做代理方面的研究,碰巧邀我帮助编译openvpn,dropbear等工具(编译他俩Android下的静态二进制文件可以查看这里),借此机会终于把SSH端口转发玩明白了。关于SSH的端口转发详细讨论可以参考IBM的文章, 另外,端口转发也可以用MSF实现,详细可参考链接

我们拥有一台公网的主机A,以及公司内网环境中完全可控的主机B,目标是通过A可以访问内网中的所有资源。倒不是说端口转发智能用SSH来做,但*inux原生支持的工具显然比其他额外安装的工具来得简洁。A主机可以是任何linux类型的系统,Ubuntu,Backtrack,Kali,whatever you like。B主机可以是桌面的linux也可以是Android等嵌入式的操作系统(如果是Android的话,需要用dbclient和dropbear代替ssh和sshd来完成以下任务,效果完全相同)

实现方案如下(A的ip为A.A.A.A,B的ip为192.168.10.10,所在网段为192.168.10.X):

  • A和B开启sshd服务,侦听22端口
  • B执行 ssh -R 1122:localhost:22 A.A.A.A -p 22
  • 此时A主机本地会因此开放1122端口,连接1122端口等于连接B的22端口,这里假设B连接A的SSHD服务所用的端口为3022,下图虚线框部分就是B和A建立的SSH通道
  • A执行 ssh -g -D 1080 127.0.0.1 -p 1122 

至此,A主机的1080端口已经成为了sock代理的服务端口,可用于访问B所在的内网192.168.10.X。A或任何主机只要将浏览器的sock代理填写为A.A.A.A:1080就可以访问到192.168.10.X了。比如一台主机C通过A访问B的内网(比如C打开192.168.10.11的80端口的Web服务页面),其数据流向如下图所示:

 

Android系统下的SUID标记

Android内核基于linux内核开发,但一些安全访问限制有所不同。

如果是Linux系统,可执行文件设置了suid标记,则该程序运行时可以拥有创建者的euid,比如自己编写的一个idpie程序

$ ls -l /system/bin/idpie
-rwsr-xr-x root	shell	651379 2013-10-30 15:21 idpie

这个程序运行时会显示自己的uid和euid,然后尝试利用setuid,seteuid等提权,再输出提权后的uid和euid

$ idpie
uid:2000,euid:0
uid:0,euid:0

目前来看,Android和Linux的情况相同,但Android系统下如果将这个程序放到/data/local/tmp目录执行,执行结果:

$ /data/local/tmp/idpie
uid:2000,euid:2000

结论是:Android下,suid位并不是程序权限提升的唯一因素,程序所在目录也会限制,虽然没有全面测试,但至少/system/bin目录下的suid标记可以生效,/data/local/tmp目录下则不行

Update:

参考Ron的研究

suid程序不能放在nosuid挂载点的文件夹,否则无法获取相应的权限

$ cat /proc/mounts | grep nosuid 可以获取mount挂载文件夹到底支不支持suid

显然 /data 和 /cache 都不行

给我一杯忘情水

一个人的时候,却难再享受 独自 带来的乐趣。

弹琴,偏偏练的源自我推荐的那段搭配四手,一双玩魔术,一双演奏。你从虫虫网下载了曲谱,练习这个曲目,我就研究那魔术怎么变。

那一段,远在天边近在眼前。而今,不远处却隔着贯穿地幔的裂痕。

听歌,韩国风的曲目都是AIR里的收藏。男女共学~哎,也是打你那儿来。站起来再跟着跳一会儿,却发现最初也是你鼓动我跟MV学舞,大半段学罢却没能跳给你看。

“你也擅长跳吗?不,我善诱”

黑白颠倒,却寻求着日月更替之际的执手。同一地平线,却背向疾走,木然回首。

做饭,柜子里的半包米线居然还没吃完,拿起来几根,想想又放下,吃完是不是就什么都不剩了。和写满韩语的类酱油瓶一样,都是五道口的韩国店出口。

几次也许路过,但从未曾见过这个神秘的地方,也猜不出这个瓶子里面到底装的是什么。只是,它看起来很像酱油。我以为我爱吃酱油。

越是不去想,越是长嗟。尤其安静得只剩下我的思绪。去恨,去抵消习惯成自然的喜欢。可是,oh my,一觉醒来,脑袋里居然浮现txstc的字符串。不怪,银行,邮箱,QQ,迅雷,衣食住行的口令都脱不了干系。”给自己留个退路”,我以为是耸人听闻,真是用心没用脑。

毒瘾烟瘾戒得掉吗?换作是十几年养成的习惯呢?

晚上还赶着写项目申请,听着音乐,间歇浏览网页,总是地三鲜–老三样,从前烙下的毛病,不管干什么,脑袋里都反复念着一个名字。

我以为要戒的只是一个习惯,结果却是一个人静下来生活每时每刻的全部。

病情反复,康复光芒闪耀,假象假象,只是回光返照。

喜欢,喜欢了整整一个曾经。只是,何时我才能过完曾经。

Matlab中figure转存eps字体模糊的解决办法

最近投论文,要求用latex投稿。然后文中想插入一张matlab仿真得到的figure。大家都知道,在matlab中,figure可以直接save as eps格式。之前也这样存了好几张图片,都没问题。但是奇怪的是,唯独就有那么一张figure,存成eps之后,图像模糊,上面的坐标label等文字在生成的pdf中也都成了很模糊的图片,而不是嵌入式的文字。找了半天解决方案,百度还是一如既往地不靠谱。于是就只好自己想办法啦,经过坚持不懈地探索,solution隆重出炉:

在figure窗口中选择File->Print Preview…,在弹出的窗口中选中Advanced标签页,然后在左边倒数第三行有个Renderer,你现在看到它右侧的下拉框一定是选择的auto,那么把它改成painters。接着点窗口右边的Close按钮。然后你再Save As…->*.eps。你再用latex生成一下pdf,是不是解决啦?

gdb on Android

临时需要分析一下android下一个so库的崩溃原因,因此需要一个调试环境。经典的方法是用NDK提供的环境实现,当然如果是做jni开发调试的话这个方法无可厚非,无可替代。但如果仅仅是对某个二进制的崩溃迹象进行轻量级分析的话,搞一套NDK就太劳民伤财了。原理上就是Android的gdbserver连接PC端gdb即可,折腾了一大圈,总算找到了编译好的binary,点击下载

Android端:

gdbserver :9999 yourprogram

PC端:

adb forward tcp:9990 tcp:9999

arm-linux-androideabi-gdb

(gdb) target remote:9999

Shake it baby~~

Android模拟器重启后不还原

Android自带的模拟器每次开启都会还原/system等文件系统解决方案很粗暴,但绝对有效~在sdk的目录下找到/sdk/platforms/android-X (比如我的虚拟机基于android 2.1,X取值为7) 这个目录下面的system.img和ramdisk.img就是模拟器每次启动时加载的文件系统了。只要解压他们,按意愿修改再打包,替换原有的文件就OK了


system.img
需要用到mkyaffs2image.exe和unyaffs.exe,用于打包和解包,需要在cygwin环境下使用,可以在这里下载


ramdisk.img
这个稍微麻烦一些,同样我是在cygwin下进行的操作
将ramdisk.img复制到/tmp目录,重命名为ramdisk.img.gz

gunzip ramdisk.img.gz
mkdir ramdisk
cd ramdisk
cpio -i -F ../ramdisk.img

然后开始你想要进行的修改吧,修改完事儿后

cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O temp.img > list
gzip -c temp.img < ../ramdisk.img

这样就在/tmp目录下面生成了打包好的ramdisk.img了,替换回去即可