(feed for all posts)

Recent articles

  1. An Ideal Platform Experience

    I've thought a while about the vision for Platform orgs. In short, my opinion is that Platform orgs should prioritize making an incredible user experience that does not require special domain expertise to use and allows Product teams to focus all their energy on the business. Unfortunately, Platform teams frequently …

    read more
  2. Coaching conversations: leadership micro-vacuums

    I have tried a script like this for the past year for engineers at around the Senior engineer level. I have been really happy with the results so far: the idea of "leadership mini-vacuums" makes growth here fairly approachable. The steps are small and people can choose to start with the step with which they are most comfortable.

    read more
  3. Data warehousing in the modern era

    Data Warehousing (DW) and Business Intelligence (BI) are a pair of concepts almost as old as databases. They spring from the need for enterprises to dig into huge amounts of data to identify business trends over time to anticipate future needs. They are inexorably linked concepts; BI refers to the …

    read more
  4. Compiling with libtool on OmniOS

    I'm having issues compiling glib2.40.0 (a libtool compiled shared library) on Omnios.

    In particular, my shared library has a static initializer that does not get executed by the libtool linked library. I've reduced this to the test case below:

    #include <stdio.h>
    void __attribute__((constructor)) myctor() {
        printf("in …
    read more
  5. Ghost in the Shellcode 2014 - fuzzy

    tl;dr - fuzzy is a "super secure parsing engine", that includes a histogram function. The histogram ascii text uses a buffer on the stack, but will increment buckets past the end of the buffer if non ascii text is provided, allowing us to rop. Binary and exploit available here. Cross …

    read more
  6. Ghost in the Shellcode 2014 - gitsmsg

    tl;dr - gitsmsg is a messaging server. A heap overflow led to arbitrary read / write and eventual code exec after circumventing RELRO. Binary and exploit available here. Cross post from PPP blog.

    The program

    First, we reverse engineered much of the binary. You "login" as a user, then can compose …

    read more
  7. Reading intern resumes

    Tonight, I sat down and read through every resume in the 2013 SCS senior resume book. Reading resumes for a company is really interesting, because I find myself looking at them very differently. As a student, I didn't really understand what sections of the resume are important. I thought it …

    read more
  8. Bash Performance Tricks

    My coworkers presented a silly programming interview style question to me the other day: given a list of words, find the largest set of words from that list that all have the same hash value. Everyone was playing around with a different language, and someone made the claim that it …

    read more
  9. My zsh theme

    I spent some time this week switching from bash to zsh (I really enjoy zsh - I treat it as bash with floating point arithmetic and other niceities) and making a theme for oh-my-zsh and prezto for myself. I'm not quite done, but I am pretty pleased with the results.

    It …

    read more
  10. A cross-platform monotonic timer

    I've been working on writing a memory bandwidth benchmark for a while and needed to use a monotonic timer to compute accurate timings. I have since learned that this is more challenging to do that I initially expected and each platform has a different way of doing it.

    read more
  11. Exploiting a Go Binary

    Earlier this year, tylerni7 showed us a proof of concept for a 32 bit Go exploit using this issue. geohot and I had a wager over who could get the first remote code execution on play.golang.org: he won, but just barely ;-). Props also to ricky for helping to find the underlying cause/writing the patch. Here is a summary of how we did it.

    read more
  12. Pai Mei on Mac OSX 10.8

    Pai Mei is an open source windows reverse engineering framework. At one point, it was ported to Mac OSX but the project is not very actively maintained and the current instructions are quite lacking. This post hopes to offer some guidance and reduce some of the frustration involved in installing …

    read more
  13. CS Theory with Make

    In this post, I play around with some make functions and eventually provide a constructive proof that the make syntax is turing complete via reduction to μ-recursion.

    First, we have to construct numbers. I used the representation of numbers as unary strings of the character 0: ie, the number 4 …

    read more