Skip to main content

Over the Wire - Bandit 13

Bandit 13

Objectives

The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!)

Solution

First lets copy the file to a temporary directory so we can manipulate it

bandit12@bandit:~$ mkdir /tmp/asbandit12bandit12@bandit:~$ cp data.txt /tmp/asbandit12bandit12@bandit:~$ cd /tmp/asbandit12bandit12@bandit:/tmp/asbandit12$ lsdata.txt


now lets convert the hexdump back to its original file 

bandit12@bandit:/tmp/asbandit12$ xxd -r data.txt data.binbandit12@bandit:/tmp/asbandit12$ lsdata.bin  data.txt

so now if we check the file type for the reverted data.bin file

<bandit12@bandit:/tmp/asbandit12$ file data.bindata.bin: gzip compressed data, was "data2.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix


so it is a gzip file
lets rename it to .gz


bandit12@bandit:/tmp/asbandit12$ mv data.bin data.gzbandit12@bandit:/tmp/asbandit12$ lsdata.gz  data.txt


now lets decompress it  the -N switch automatically renames it to its original file name


bandit12@bandit:/tmp/asbandit12$ gunzip -N data.gzbandit12@bandit:/tmp/asbandit12$ lsdata2.bin  data.txt


Let's see if its really a bin file?

bandit12@bandit:/tmp/asbandit12$ file data2.bindata2.bin: bzip2 compressed data, block size = 900k


Nope its a bzip lets rename and unzip it

bandit12@bandit:/tmp/asbandit12$ mv data2.bin data2.bz2bandit12@bandit:/tmp/asbandit12$ lsdata2.bz2  data.txtbandit12@bandit:/tmp/asbandit12$ bunzip2 data2.bz2bandit12@bandit:/tmp/asbandit12$ lsdata2  data.txt


is this its final form? Nope that was a gzip file too

bandit12@bandit:/tmp/asbandit12$ file data2data2: gzip compressed data, was "data4.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix


we'll rename it to .gz and unzip and see what kind of file that was

bandit12@bandit:/tmp/asbandit12$ mv data2 data2.gzbandit12@bandit:/tmp/asbandit12$ gunzip -N data2.gzbandit12@bandit:/tmp/asbandit12$ lsdata4.bin  data.txtbandit12@bandit:/tmp/asbandit12$ file data4.bindata4.bin: POSIX tar archive (GNU)


ok now its a tar file...... this is getting a bit ridiculous

bandit12@bandit:/tmp/asbandit12$ mv data4.bin data4.tarbandit12@bandit:/tmp/asbandit12$ tar -xvf data4.tardata5.binbandit12@bandit:/tmp/asbandit12$ lsdata4.tar  data5.bin  data.txtbandit12@bandit:/tmp/asbandit12$ file data5.bindata5.bin: POSIX tar archive (GNU)


ok double tar'd

bandit12@bandit:/tmp/asbandit12$ mv data5.bin data5.tarbandit12@bandit:/tmp/asbandit12$ tar -xvf data5.tardata6.binbandit12@bandit:/tmp/asbandit12$ file data6.bindata6.bin: bzip2 compressed data, block size = 900k


now its BZ again

bandit12@bandit:/tmp/asbandit12$ mv data6.bin data6.bz2bandit12@bandit:/tmp/asbandit12$ bunzip2 data6.bz2bandit12@bandit:/tmp/asbandit12$ lsdata4.tar  data5.tar  data6  data.txtbandit12@bandit:/tmp/asbandit12$ file data6data6: POSIX tar archive (GNU)


and now its a tar again....... little past ridiculous now huh?

bandit12@bandit:/tmp/asbandit12$ mv data6 data6.tarbandit12@bandit:/tmp/asbandit12$ tar -xvf data6.tardata8.binbandit12@bandit:/tmp/asbandit12$ file data8.bindata8.bin: gzip compressed data, was "data9.bin", last modified: Tue Oct 16 12:00:23 2018, max compression, from Unix


now its back to gz

bandit12@bandit:/tmp/asbandit12$ mv data8.bin data8.gzbandit12@bandit:/tmp/asbandit12$ gunzip -N data8.gzbandit12@bandit:/tmp/asbandit12$ lsdata4.tar  data5.tar  data6.tar  data9.bin  data.txtbandit12@bandit:/tmp/asbandit12$ file data9.bindata9.bin: ASCII text



Wahooooo it's an ascii file lets read it

bandit12@bandit:/tmp/asbandit12$ cat data9.binThe password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL



now I have to figure out how to do this in python





import osimport subprocessimport shleximport gzipimport glob

os.system("xxd -r data.txt data.bin")
gziptype = 'application/gzip'txt = 'text/plain'tar = 'application/x-tar'bzip = 'application/x-bzip2'
filename = ''mime_type = ''newfile = ''
def funcgzip(): global filename base = os.path.splitext(filename)[0] filenamenewgz =  base + '.gz' os.rename(filename, base + '.gz') filename = filenamenewgz command = ('gunzip -N ' +filename) os.system(command)
def funcbzip(): global filename base = os.path.splitext(filename)[0] filenamenewbz =  base + '.bz2' os.rename(filename, base + '.bz2') filename = filenamenewbz command = ('bunzip2 ' +filename) os.system(command)

def functar(): global filename base = os.path.splitext(filename)[0] filenamenewtar =  base + '.tar' os.rename(filename, base + '.tar') filename = filenamenewtar command = ('tar -xvf ' +filename) os.system(command)

def findnew(): global newfile global filename list_of_file = glob.glob('./*') newfile = max(list_of_file,key=os.path.getctime) filename = newfile return(filename)

def filemimetype(): global mime_type global filename cmd = shlex.split('file --mime-type {0}'.format(filename)) result = subprocess.check_output(cmd) mime_type = result.split()[-1]


def ascii(): global mime_type if mime_type == txt:  print('txt mimetype', filename)  os.system('cat '+filename) else:   if mime_type == gziptype:   funcgzip()  else:   if mime_type == tar:    functar()   else:    if mime_type == bzip:     funcbzip()    else:     print('oops')    

findnew()filemimetype()
while mime_type != txt: findnew() filemimetype()
 ascii()






...'./data.bin''./data2.bin''./data2''./data4.bin'data5.bin'./data5.bin'data6.bin'./data5.tar'data6.bin'./data6.bin''./data6'data8.bin'./data8.bin''./data9.bin'('txt mimetype', './data9.bin')The password is 8ZjyCRiBWFYkneahHwxCv3wb2a1ORpYL



Comments

Popular posts from this blog

RingZero CTF - Cyrptography - You're Drunk

RingZero CTF - Cyptography - Your're Drunk Problem: Ayowe awxewr nwaalfw die tiy rgw fklf ua xgixiklrw! Tiy lew qwkxinw. Solution: So just looking at this one it looks like its formatted as a sentence. There is spacing between words, punctuation and capitalization. At fist I thought Cesar cipher, but I ran through some shifts and none of them came back with english words. So then I though substitution cipher. We know from frequency analysis of the English language some good starting points. The most common letter would be "E" The most common double letters would be "OO", "EE" and"SS"  so let start with that and see what we can come up with This site is a great resource for some of the assumptions I'm making here ( http://practicalcryptography.com/ciphers/monoalphabetic-substitution-category/simple-substitution/ ) I used this website to count the letter frequency for me ( https://www.dcode.fr/frequency-analysis ) ...

HacktheBox - Retired - Frolic

HacktheBox - Retired - Frolic Recon Let's start out with a threader3000 scan Some interesting results here Port 22 and 445 aren't uncommon… but 1880 and 9999 are.. Let's let nmap run through these ports  Option Selection: 1 nmap -p22,445,1880,9999 -sV -sC -T4 -Pn -oA 10.10.10.111 10.10.10.111 Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower. Starting Nmap 7.91 ( https://nmap.org ) at 2021-05-05 16:17 EDT Nmap scan report for 10.10.10.111 Host is up (0.060s latency). PORT     STATE SERVICE     VERSION 22/tcp   open  ssh         OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: |   2048 87:7b:91:2a:0f:11:b6:57:1e:cb:9f:77:cf:35:e2:21 (RSA) |   256 b7:9b:06:dd:c2:5e:28:44:78:41:1e:67:7d:1e:b7:62 (ECDSA) |_  256 21:cf:16:6d:82:a4:30:c3:c6:9c:d7:38:ba:b5:02:b0 (ED25519) 445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP) 1880/tcp open  http        Node.js (Express middlewar...

De-ICE: S1.140 - Write up

De-ICE: S1.140 https://www.vulnhub.com/entry/de-ice-s1140,57/ I've been doing a lot of hackthebox.eu boxes, I've decided to take a small break from those and focus on other vuln boxes for a while, A colleague told me about these ICE boxes he did for labs during school. So  I decided to check them out. Recon Since these are live CD's the first thing I need to do is find out the ip address of the live CD VM i'm running. My home network is 192.168.50.0/24 so I started with a small updown nmap scan of my entire subnet to find the target VM nmap -T4 -oX /root/Desktop/ice/nmap.xml 192.168.50.0/24 I then converted the XML output to HTML to make it pretty xsltproc /root/Desktop/ice/nmap.xml -o /root/Desktop/ice/nmap.html Found the target at 192.168.50.176 So now let's rescan the open ports with the -A switch to finger the OS/Services Let's recap what we found Port 21 PROFTPD 1.3.4a Port 22 OPenSSH 5.9p1 Port 80 Apa...