如果打印中文是以下的简单代码,会怎样?

1
2
3
4
5
# -*- coding: utf-8 -*-
__author__ = 'seven'
s = '中文'
print s

可以看到控制台输出是乱码..那么为什么会出现这个问题?怎么解决这个问题呢?

乱码原因

可以看到,我的文件声明是utf-8编码,但是win下的控制台输出是gbk编码,两者的编码不对应,输出自然会是乱码。

解决方法

一、文件声明编码为gbk

二、但是很多时候,我们是从其他地方得到的文件进行处理的,而该文件本身的编码方式就是utf-8,那么我们就在控制台输出的地方进行一个转码。

1
2
3
4
5
# -*- coding: utf-8 -*-
__author__ = 'seven'
s = '中文'
print s.decode('utf-8').encode('gbk')

这样转码之后,控制台输出就不会中文乱码啦。

0x00 序

在对app做安全测试时,通常会需要对app的网络通信进行抓包,但是面对app使用了https包时,由于手机没有burp的证书,因此可能会导致该次通信失败,所以下面的文章主要讲述如何通过burp抓取app的https包。

0x01 获取burpsuite证书

在wooyun上有看到文章说通过http://burp/cert 这个url导出证书,但是我发现打不开,因此还是采用从浏览器中导出证书的方式。

1.配置浏览器代理

(1)首先开启burp,设置好代理

(2)此处用firefox浏览器作为例子。开启浏览器的代理
一般在 选项->高级->网络->连接的设置 中设置代理,ip和端口跟burp上的一样。
我这里用了firefox的插件,方便设置。

2.下载并导出burp的证书

(1)上面两个代理都设置开启好之后,在浏览器访问http://burp ,点击”CA Certificate”下载证书-“cacert.der”

(2)选项->高级->证书->查看证书
接着导入证书-“cacert.der”

要记得勾选第一个选项

(3)最后导出证书-“PortSwiggerCA.crt”

0x02 将证书导入手机

  1. 通过adb push或传输附件等方式,将”PortSwiggerCA.crt”放到手机里,接着 设置->安全->从存储设备安装证书

  1. 选择刚刚放进来的证书

  2. 正常这样就成功了,但是我的出现“键入凭据存储的密码”的弹框。我的解决办法是,将解锁设置成图案解锁,不要采用滑动等低安全系数的屏幕锁定方式

通过以上步骤,burp就可以抓取手机上的HTTPS包了。

这次比赛抽空做了四道题,Crypto一道,Reverse一道,Web两道。

李二狗的梦中情人

类型:Crypto
附件下载后是一张艾玛沃特森的图片,用winhex查看,发现最后有个网址

1
http://image.baidu.com/search/down?tn=download&word=download&ie=utf8&fr=detail&url=http%3A%2F%2Fimg4q.duitang.com%2Fuploads%2Fitem%2F201501%2F13%2F20150113172039_Ea5ry.jpeg&thumburl=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D3348217047%2C3111455891%26fm%3D21%26gp%3D0.jpg

贴到浏览器下载,是另一张看起来一样的艾玛的图片,直觉两张图片做处理应该会有些东西出现,于是用stegsolve将两张图片combine之后,发现sub操作会有一个二维码出现。

但是这个二维码是反色的,扔到paint,然后选择反色,再扔进二维码读取器,就得到flag

flag:whctf{hel10 ber7@hust_is}

坐标定位

类型:Reverse
这道题就是之前ali移动安全挑战赛的翻版,只是flag变了而已
看反编译之后的代码可以看到,pw就是我们要破解的密码,而enPassword是我们输入的密码,两者相同就算破解成功,而两者都通过logcat输出来可以看到了,对照table表,可以很容易得出flag

flag:whctf{30-30-55-114-25-6}

beat it

类型:Web
下载是一个pcap文件,用wireshark打开,只有三个包,看data部分

可以看到77 68 63 74 66 刚好就是whctf的16进制ascii码, 于是后面也就是这样解出来了

flag:whctf{000 here it is the flag 000}

忘了账户和密码

类型:Web

http://drops.wooyun.org/tips/123 这篇文章里提到的方法

flag:whctf{hustatmyhome}

前言

由于机子换了SSD,hexo也要迁移过来,于是有了这篇文章,当作一个记录。

迁移

概述

关于hexo的迁移,有人在知乎上已经有了回答使用hexo,如果换了电脑怎么更新博客?,我挑了点赞数最多的那个试了一下,发现有一步怎么都失败,于是放弃这些前沿的方法,打算用回旧方法了。在github仓库里存放的是生成的静态文件,而我们编写的md文件并不会放在上面,所以关键是怎么把md文件和一些配置文件迁移过来就好了。

流程

  1. 按照老方法,安装完git,nodejs等必备的工具和环境
  2. 安装hexo
    npm install -g hexo
  3. 创建hexo文件夹
    hexo init
  4. 安装依赖包
    npm install
    npm install hexo-deployer-git –save
  5. 将原先/source文件夹下的文章都复制过来
  6. 将原先/theme文件夹下的主题复制过来
  7. 将配置文件_config.yml文件复制过来
  8. 正常使用

做完以上几步,应该就可以像之前那样继续使用Hexo了。

前言

本文用eclipse主要是调试smali代码,不涉及原生程序,原生程序可以使用ida进行调试。

准备工作

1.crackeme02.apk(一个用于调试的app)
2.eclipse
3.apktool
4.signapk(用于签名重打包的apk)
5.相关环境(如jdk,模拟器或手机等等)

重打包apk

1.反编译apk

1
apktool d -d crackme02.apk

此处使用-d参数,因为这样反编译出来的文件后缀是.java,而java文件才能被eclipse识别并调试。

2.首先到反编译输出的文件夹中的AndroidManifest.xml文件中,将android:debuggable属性设置为true

3.接着在MainActivity的OnCreate方法中添加调试等待,在onCreate方法下面一行添加:

1
a=0;// invoke-static {}, Landroid/os/Debug;->waitForDebugger()V

4.保存修改的文件,重新打包,并签名。

1
apktool b -d crackme02.apk

调试环境设置

1.在手机或模拟器上安装刚刚修改打包好的apk

2.将修改的源码导入eclipse中

3.以crackeme02.apk为例,

(1)在MainActivity.java的311行(即刚刚添加调试等待代码的那一行)设置断点

(2)在MainActivity$1.java的43行和51行设置断点(即onclick方法下面)

4.在DDMS窗口查看可调试程序的端口号,即最后一栏显示的端口号。

5.接下来将代码和调试程序关联。
Debug Configuration->Remote Java Application->Port 填刚刚看到的端口号。

调试实战

1.若ecplise的Debug窗口的内容都是Dalvik VM的内容,则退出app再重新进入,直到有显示MainActivity->onCreate的内容,这样才可以正常调试。

2.程序的简单功能是匹配用户名和注册码,我们想要做的就是破解注册码。运行调试(F8),填写用户名和随便写一个注册码,点击注册。

3.这时候程序会开始运行,跳转。接着可以单步跟踪,并且利用设置断点,让程序运行到我们想要到达的位置然后停下来,在窗口右边我们可以观察寄存器的数值。我们想要的注册码的值就可以通过调试观察得到。