Skip to content

Commit 80631f9

Browse files
fixed image URLs in markdown
1 parent 50d33cb commit 80631f9

24 files changed

+67
-67
lines changed

content/blog/angstromCTF-streams.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ First, we deduced some information about the challenge by reading the descriptio
2727

2828
We then proceeded to inspect the website – the HTML looks pretty standard, and I decided to leave player.js alone and come back to it if we failed to find a solution (would be more of a web challenge at that point). Under the ‘Network’ tab, we see that there appear to be two streams of chunks:
2929

30-
![Screenshot of Network monitor on ](/static/blog/angstromctf-streams-network.jpg)
30+
![Screenshot of Network monitor on ](/blog/angstromctf-streams-network.jpg)
3131

3232
- chunk-stream0-0000*.m4s chunks initiated by init-stream0.m4s
3333
- chunk-stream1-0000*.m4s chunks initiated by init-stream1.m4s

content/blog/auctf-aliedas-about-some-thing.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ Author: c
2323

2424
`AUCTFShh` looks like a username. To find where that username is in use, we can either check manually (as I started out doing), or use some tools from the [OSINT Framework Site](https://osintframework.com/). Specifically, I used `OSINT Framework` > `Username` > `Username Search Engines` > `Namechk`.
2525

26-
![Screenshot of Namechk service for username 'AUCTFShh'](/static/blog/auctf-aliedas-about-some-thing-namechk1.png)
26+
![Screenshot of Namechk service for username 'AUCTFShh'](/blog/auctf-aliedas-about-some-thing-namechk1.png)
2727

2828
I opened each of the greyed out sites in a tab, and looked through each for anything suspicious. The usual suspects (Twitter, Instagram, Reddit) were all blank (even on the Wayback Machine), so on further…
2929

3030
The Steam account by the name of `AUCTFShh` [link](https://steamcommunity.com/id/AUCTFShh) [archive](http://archive.today/2020.04.06-023418/https://steamcommunity.com/id/AUCTFShh) shows that this user has aliased their user name to `youllneverfindmese`. Back to [Namechk](https://namechk.com/):
3131

32-
![Screenshot of Namechk service for username 'youllneverfindmese'](/static/blog/auctf-aliedas-about-some-thing-namechk2.png)
32+
![Screenshot of Namechk service for username 'youllneverfindmese'](/blog/auctf-aliedas-about-some-thing-namechk2.png)
3333

3434
The first thing I noticed is the PasteBin account listed. Visiting it reveals that this user has one page [link](https://pastebin.com/qMRYqzYB) [archive](http://archive.today/2020.04.06-023833/https://pastebin.com/qMRYqzYB). It contains:
3535

content/blog/auctf-osint-you-all-over-the-place.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ A Google search turns up first result of Shannon’s linkedin profile [link](htt
3535

3636
This in turn has a photo on it, which is of some text:
3737

38-
![Photo of a computer screen showing the Lorem Ipsum text containing a CTF flag](/static/blog/auctf-osint-you-all-over-the-place-lorem.jpg)
38+
![Photo of a computer screen showing the Lorem Ipsum text containing a CTF flag](/blog/auctf-osint-you-all-over-the-place-lorem.jpg)
3939

4040
There is “auctf” and some leetspeak in there, but it is surrounded by (and split up by) the default sample text (“Lorem ipsum dolor sit amet”). We need to remove that, which I did manually (for each word after “auctf”, if it is in the default text, do not count it in the flag) (based on [this](https://loremipsum.io/):
4141

content/blog/bsidespdx-2022.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ Many thanks to the BSidesPDX crew for hosting another great year! The passion an
1515

1616
For more information on BSidesPDX, please visit: [https://bsidespdx.org/](https://bsidespdx.org/)
1717

18-
![The OSUSEC team at BSides, crammed into an elevator, ready to head home.](/static/blog/bsidespdx-2022-elevator.jpg)
18+
![The OSUSEC team at BSides, crammed into an elevator, ready to head home.](/blog/bsidespdx-2022-elevator.jpg)
1919

20-
![The CTF team in the “Big W” closet.](/static/blog/bsidespdx-2022-closet.jpg)
20+
![The CTF team in the “Big W” closet.](/blog/bsidespdx-2022-closet.jpg)

content/blog/bsidespdx-down-the-rabbit-hole.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ To get result `BSIDESTROLOLOLOL`. Bummer, but at least we can cross off this lea
6565

6666
The message on the top of the screen was decoded, as it was quickly identified to be the [pigpen cipher](https://en.wikipedia.org/wiki/Pigpen_cipher).
6767

68-
![Screenshot of rune-like text, the pigpen cipher](/static/blog/bsidespdx-down-the-rabbit-hole-pigpen.png)
68+
![Screenshot of rune-like text, the pigpen cipher](/blog/bsidespdx-down-the-rabbit-hole-pigpen.png)
6969

7070
`not a flag either`
7171

@@ -93,11 +93,11 @@ Following [an extremely thorough guide about how to decode this very kind of fil
9393

9494
I was a bit slow to start it the first time, so I got the second half first:
9595

96-
![Screenshot of grainy black and white video featuring a can of ovaltine and half of the CTF flag overtop](/static/blog/bsidespdx-down-the-rabbit-hole-ovaltine1.png)
96+
![Screenshot of grainy black and white video featuring a can of ovaltine and half of the CTF flag overtop](/blog/bsidespdx-down-the-rabbit-hole-ovaltine1.png)
9797

9898
… and the second part on the second run:
9999

100-
![Screenshot of grainy black and white video featuring a can of ovaltine and half of the CTF flag overtop](/static/blog/bsidespdx-down-the-rabbit-hole-ovaltine2.png)
100+
![Screenshot of grainy black and white video featuring a can of ovaltine and half of the CTF flag overtop](/blog/bsidespdx-down-the-rabbit-hole-ovaltine2.png)
101101

102102
```
103103
BSidesPDX{b3_sUR3_T0_dr!nk_y0Ur_Ov4ltin3}

content/blog/bsidespdx-please-stand-by.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,19 @@ These QR codes, however, are obviously incomplete, as evidenced by the fractiona
3333

3434
Following that, we screenshotted each image. Here they are:
3535

36-
![A fragment of a QR code](/static/blog/bsidespdx-please-stand-by-1.png)
36+
![A fragment of a QR code](/blog/bsidespdx-please-stand-by-1.png)
3737

38-
![A fragment of a QR code](/static/blog/bsidespdx-please-stand-by-2.png)
38+
![A fragment of a QR code](/blog/bsidespdx-please-stand-by-2.png)
3939

40-
![A fragment of a QR code](/static/blog/bsidespdx-please-stand-by-3.png)
40+
![A fragment of a QR code](/blog/bsidespdx-please-stand-by-3.png)
4141

42-
![A fragment of a QR code](/static/blog/bsidespdx-please-stand-by-4.png)
42+
![A fragment of a QR code](/blog/bsidespdx-please-stand-by-4.png)
4343

4444
If we think about the regular format for QR codes, we would expect the “Position Patterns” (the square shaped sets of pixels) to be in the corners, so that informs us about the first orientation we should try.
4545

4646
In [Gimp](https://www.gimp.org/), we can stitch these together, and we get the following:
4747

48-
![](/static/blog/bsidespdx-please-stand-by-qr.png)
48+
![](/blog/bsidespdx-please-stand-by-qr.png)
4949

5050
When scanned, that QR code becomes the text:
5151

content/blog/defcon-qualifiers-2019-redacted-puzzle.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Megapixels : 0.922
4040

4141
OK. We know that this is likely a GIF with 35 frames. Let’s try opening it:
4242

43-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-1.jpg)
43+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-1.jpg)
4444

4545
Let’s gather some more information about this GIF:
4646

@@ -60,33 +60,33 @@ $identify -verbose redacted-puzzle.gif
6060

6161
That is a bit of a weird color map… Those should correspond with different colors. Let’s open this image in [gimp](https://www.gimp.org/). We use the `Open as Layers` option to get each frame as an individual layer.
6262

63-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-2.jpg)
63+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-2.jpg)
6464

6565
Much layers. Next, we gotta fix that color mapping issue. `Colors>Map>Set Color Map` and choose `Pallete>Ega`:
6666

67-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-3.jpg)
67+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-3.jpg)
6868

6969
Well, we know what the flag’s alphabet will be. Then, after looking at each slide . . .
7070

71-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-4.jpg)
71+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-4.jpg)
7272

7373
We determined it best to remove the black backgrounds on each. One by one.
7474

75-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-5.jpg)
75+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-5.jpg)
7676

7777
Now we can see them all overlapping. They form some sort of circle:
7878

79-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-6.jpg)
79+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-6.jpg)
8080

8181
Let’s examine only a couple…
8282

83-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-7.jpg)
83+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-7.jpg)
8484

8585
That is intresting. Going off a hunch, we decided to build sets of binary digits representing if the vertex of a frame was where one of the verticies of the overall ‘octagon’, using dots in the background:
8686

87-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-8.jpg)
87+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-8.jpg)
8888

89-
![](/static/blog/defcon-qualifiers-2019-redacted-puzzle-9.jpg)
89+
![](/blog/defcon-qualifiers-2019-redacted-puzzle-9.jpg)
9090

9191
As we repeated that for each layer, the shapes’ verticies started to ‘rotate’, or ‘drift’ (thus why when all overlayed, they formed a circle, not octagon). We decided to track the movment and adjust the background dots. We generated the ‘bytes’:
9292

content/blog/doe-cyberforce-competition-2021.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The team roster was:
2222

2323
The final scoreboard was as follows, if a link to an official final scoreboard is made available, I will link it here.
2424

25-
![Screenshot of the scoreboard, showing Oregon State University in 7th place](/static/blog/doe-cyberforce-competition-2021-scoreboard.png)
25+
![Screenshot of the scoreboard, showing Oregon State University in 7th place](/blog/doe-cyberforce-competition-2021-scoreboard.png)
2626

2727
We look forward to returning next year, even better prepared for the new competition format!
2828

content/blog/fword-ctf-identity-fraud.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Points: 419 Solves: 86 Category: OSINT
2121

2222
We start at the twitter page of the account mentioned in the challenge description: [@1337bloggs](http://archive.today/2020.08.31-140505/https://twitter.com/1337bloggs/with_replies), and we are greeted with this tweet:
2323

24-
![Screenshot of tweet advertising needing a final CTF player for a team](/static/blog/fword-ctf-identity-fraud-tweet.jpg)
24+
![Screenshot of tweet advertising needing a final CTF player for a team](/blog/fword-ctf-identity-fraud-tweet.jpg)
2525

2626
This indicates that at some point (around 8/26/2020), Eword had something on their CTFTime page. Over to the Wayback Machine! It shows two captures in 2020, 08/26 and 08/27. Let’s view [the 08/26 capture](https://web.archive.org/web/20200826195056/https://ctftime.org/team/131587) – it appears to link to a PasteBin:
2727

@@ -41,39 +41,39 @@ https://pastebin.com/PZvaSjA0
4141

4242
Clearly we have to find the leader of Eword (we’ll get to that in a second), but we inspect this [new pastebin](https://pastebin.com/PZvaSjA0) first. It contains a bunch of what looks to be base64 data, so we put it into [cyberchef](https://gchq.github.io/CyberChef) and get this image out:
4343

44-
![Picture of Hilton hotel with text around it.](/static/blog/fword-ctf-identity-fraud-hilton.jpg)
44+
![Picture of Hilton hotel with text around it.](/blog/fword-ctf-identity-fraud-hilton.jpg)
4545

4646
It shows us a Hilton hotel somewhere, and the size of the image is `1080X2094` – an unfamiliar resolution to me, so I googled it up, and it appears that this is a resolution used by Instagram. I also tried using Google Image reverse search to locate the hotel, however I was unsuccessful there, too, not that it would have helped too much.
4747

4848
> Note: if Instagram stories were indexed in a reverse image search engine like Google reverse image search, or TinEye, you would be able to jump to the end of the challenge using this information (instagram, photo), however I tried this and could not get success at the time.
4949
5050
So we are looking for something that has to do with a Hilton and Eword Team, let’s use Google: when we search for `"Hilton" "Eword" "team"`, we are greeted with a review for a Hilton in Podgorica, Montenegro:
5151

52-
![Screenshot of Google result that is a TripAdvisor review of the hotel](/static/blog/fword-ctf-identity-fraud-google-hilton.png)
52+
![Screenshot of Google result that is a TripAdvisor review of the hotel](/blog/fword-ctf-identity-fraud-google-hilton.png)
5353

5454
Clicking that link gives us a tripadvisor page where we can search for that review with `Ctrl + F`.
5555

56-
![Screenshot of a TripAdvisor review about the hotel](/static/blog/fword-ctf-identity-fraud-tripadvisor-review.png)
56+
![Screenshot of a TripAdvisor review about the hotel](/blog/fword-ctf-identity-fraud-tripadvisor-review.png)
5757

5858
Looking further into that user, it’s clear what we have to do:
5959

60-
![Screenshot of the TripAdvisor accounc that wrote the review](/static/blog/fword-ctf-identity-fraud-tripadvisor-account.png)
60+
![Screenshot of the TripAdvisor accounc that wrote the review](/blog/fword-ctf-identity-fraud-tripadvisor-account.png)
6161

6262
We need to check the instagram of Wokaihwokomas Kustermann, which will likely be under the name he has in the Intro section, `wokaihwokomaskustermann`. Notably, you cannot just search for the username in google:
6363

64-
![Screenshot of google returning no results upon searching for the Instagram username](/static/blog/fword-ctf-identity-fraud-failed-google.png)
64+
![Screenshot of google returning no results upon searching for the Instagram username](/blog/fword-ctf-identity-fraud-failed-google.png)
6565

6666
Instead, you will need to go to log in to instagram first, then search for the username, and [the account indeed shows up](https://www.instagram.com/wokaihwokomaskustermann/). There are a couple “Highlights”, the first of which is the hotel image we got earlier, the second says:
6767

68-
![Screenshot of an Instagram highlight](/static/blog/fword-ctf-identity-fraud-instagram-highlight.png)
68+
![Screenshot of an Instagram highlight](/blog/fword-ctf-identity-fraud-instagram-highlight.png)
6969

7070
Well, that seems indicative that we need to get the original image behind the circular profile pic (the other picture on their instagram is not the same as their profile pic), and we do that with a bit of inspect element and a `wget` request to save it:
7171

72-
![Photo of a man smiling at the camera with text at the bottom](/static/blog/fword-ctf-identity-fraud-pfp-small.jpg)
72+
![Photo of a man smiling at the camera with text at the bottom](/blog/fword-ctf-identity-fraud-pfp-small.jpg)
7373

7474
There’s very obviously a flag along the bottom (or some other writing), however it is too low res to read. Instead of figuring out how to make a properly formed request to Instagram’s `cdn` servers, I used a tool called [instadp](https://www.instadp.com/) to get [a full sized display picture](https://www.instadp.com/fullsize/wokaihwokomaskustermann):
7575

76-
![Photo of a man smiling at the camera with text at the bottom, the text now large enough to be legible](/static/blog/fword-ctf-identity-fraud-pfp-big.jpg)
76+
![Photo of a man smiling at the camera with text at the bottom, the text now large enough to be legible](/blog/fword-ctf-identity-fraud-pfp-big.jpg)
7777

7878
That’s all there is to it!
7979

content/blog/houseplantctf-catography-writeup.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ $ exiftool -fileOrder gpsdatetime -p gpx.fmt /path/to/all_cats > out.gpx
6464

6565
Now, using [this online tool](https://www.gpsvisualizer.com/map?output_home) we can output this data as a png, and interpret the flag from the path:
6666

67-
![Diagram depicting flight path that spells out the flag](/static/blog/houseplantctf-catography-writeup-flightpath.jpg)
67+
![Diagram depicting flight path that spells out the flag](/blog/houseplantctf-catography-writeup-flightpath.jpg)
6868

6969
```
7070
rtcp{4round_7h3_w0r1d}

content/blog/houseplantctf-satans-jigsaw-writeup.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Then, comes the fun part. Before reading the hint, I tried just forming the imag
2727

2828
The hint makes obvious that we must convert the decimal part of the filename to bytes, but it does not explain what to do with those. However, after trying it out, we saw that the he decoded filenames contain an X and Y ‘coordinate’ in the format “X Y”. Decoding all this, sorting, and making an image is all achieved in the script [image_reconstruct.py](https://github.com/lyellread/ctf-writeups/blob/master/2020-houseplant/satans-jigsaw/image_reconstruct.py).
2929

30-
![A picture of a pencil held in a hand with two QR codes overlaid on top of it](/static/blog/houseplantctf-satans-jigsaw-writeup-pencil.jpg)
30+
![A picture of a pencil held in a hand with two QR codes overlaid on top of it](/blog/houseplantctf-satans-jigsaw-writeup-pencil.jpg)
3131

3232
The top left QR code was essential to solving the challenge, however the bottom right one contains the flag.
3333

content/blog/nahamconctf-finsta.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ I used the `namechk` tools from the [OSINT Framework Site](https://osintframewor
2121

2222
`namechk` tells me that there are claimed usernames for the name `NahamConTron` for many sites, including Instagram.
2323

24-
![Screenshot of website namechk for username NahamConTron](/static/blog/nahamconctf-finsta-namechk.jpg)
24+
![Screenshot of website namechk for username NahamConTron](/blog/nahamconctf-finsta-namechk.jpg)
2525

2626
Checking out [the Instagram account](https://www.instagram.com/NahamConTron/), we get the flag.
2727

content/blog/nahamconctf-microosoft.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ draft: false
2323

2424
Opening the file does not do much, but it would not be that easy.
2525

26-
![Screenshot of open Word document spelling "oof"](/static/blog/nahamconctf-microosoft-docx.jpg)
26+
![Screenshot of open Word document spelling "oof"](/blog/nahamconctf-microosoft-docx.jpg)
2727

2828
Using file we can find out that this is an OOXML document:
2929

@@ -34,7 +34,7 @@ microsooft.docx: Microsoft OOXML
3434

3535
Based on this, and [some quick reading](https://ntnuopen.ntnu.no/ntnu-xmlui/bitstream/handle/11250/198656/EDidriksen.pdf?sequence=1), we can see that this format can contain files. To view these files, I first tried [this chrome extension](https://chrome.google.com/webstore/detail/ooxml-tools/bjmmjfdegplhkefakjkccocjanekbapn?hl=en), before settling on getting a trial licensed version of [OxygenXML.](https://www.oxygenxml.com/) Opening it in here, and viewing the file `src/oof.txt` gives us the flag:
3636

37-
![Screenshot of Word document dissected into ZIPped files, including oof.txt](/static/blog/nahamconctf-microosoft-oxygen.png)
37+
![Screenshot of Word document dissected into ZIPped files, including oof.txt](/blog/nahamconctf-microosoft-oxygen.png)
3838

3939
```
4040
flag{oof_is_right_why_gfxdata_though}

content/blog/nahamconctf-time-keeper.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ After scoping out that site, the title and description heavily hint towards use
2525

2626
First, I noted that there were only two captures, so I figured it would be worth it to compare them. In doing so, I came upon [this](https://web.archive.org/web/diff/20200509205430/20200418214642/https://apporima.com/):
2727

28-
![Screenshot of webpage telling the reader that the flag is at ./flag.txt](/static/blog/nahamconctf-time-keeper-diff.png)
28+
![Screenshot of webpage telling the reader that the flag is at ./flag.txt](/blog/nahamconctf-time-keeper-diff.png)
2929

3030
It clearly indicates that we need to browse to `apporima.com/flag.txt` but in current times, that page does not exist. What else to do but browse it in the Wayback Machine? It gives us [this page](https://web.archive.org/web/20200418213402/https://apporima.com/flag.txt).
3131

content/blog/nahamconctf-tron.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ I used the `namechk` tools from the [OSINT Framework Site](https://osintframewor
2121

2222
`namechk` tells me that there are claimed usernames for the name NahamConTron for many sites:
2323

24-
![Screenshot of namechk for user NahamConTron](/static/blog/nahamconctf-tron-namechk.png)
24+
![Screenshot of namechk for user NahamConTron](/blog/nahamconctf-tron-namechk.png)
2525

2626
Now that we have exhausted Instagram, I opened up all the other sites with claimed usernames for `NahamConTron` and systematically eliminated them. I ended up at the GitHub account owned by `NahamConTron`, and it included [a dotfiles repo](https://github.com/lyellread/ctf-writeups/blob/master/2020-nahamconctf/tron/dotfiles). This in turn contains [a bash history file](https://github.com/lyellread/ctf-writeups/blob/master/2020-nahamconctf/tron/dotfiles/.bash_history) that gives us the command that was run to access the server:
2727

content/blog/nccdc-2023.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ The team consisted of Julie Weber, Mike Carris, Matt Jansen, Evan Mrazik, Otso B
1919

2020
Congratulations to Stanford University, who finished first place!
2121

22-
![Polaroid picture of OSUSEC’s CDC team posing by the school flag](/static/blog/nccdc-2023-polaroid.jpg)
22+
![Polaroid picture of OSUSEC’s CDC team posing by the school flag](/blog/nccdc-2023-polaroid.jpg)
2323

2424

0 commit comments

Comments
 (0)