From 774d58eff69c11a68560773b69c0fc2bd462425f Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Tue, 8 Mar 2011 23:06:21 -0700 Subject: [PATCH] Some fixes during TF3 --- packages/crypto/200/index.mdwn | 2 ++ packages/mcp/Makefile | 34 ------------------------ packages/mcp/fnord.patch | 15 +++++++++++ packages/mcp/mcp.mk | 33 +++++++++++++++++++---- packages/mcp/service/httpd/run | 13 ++++----- packages/mcp/service/tokend/run | 2 +- packages/mcp/src/puzzles.cgi.c | 2 +- packages/mcp/www/register.cgi | 34 ++++++++++++++++++++++++ packages/mcp/www/register.html | 9 +++++-- packages/net-re/1200/hint | 3 --- packages/net-re/4000/summary | 1 + packages/net-re/5000/summary | 2 +- packages/rlyeh/rlyeh.mk | 8 ++++-- packages/rlyeh/service/rlyeh/log/run | 3 +++ packages/rlyeh/tokens/rlyeh/category | 1 + packages/rlyeh/tokens/rlyeh/category.key | 1 + packages/rlyeh/tokens/rlyeh/enc.key | 1 + packages/tanks/tanks.mk | 8 ++++-- packages/wopr/service/wopr/run | 7 +++++ packages/wopr/wopr.mk | 1 + packages/wopr/www/wopr/wopr.cgi | 2 +- 21 files changed, 122 insertions(+), 60 deletions(-) create mode 100644 packages/crypto/200/index.mdwn delete mode 100644 packages/mcp/Makefile create mode 100644 packages/mcp/fnord.patch create mode 100755 packages/mcp/www/register.cgi delete mode 100644 packages/net-re/1200/hint create mode 100644 packages/net-re/4000/summary create mode 100755 packages/rlyeh/service/rlyeh/log/run create mode 100644 packages/rlyeh/tokens/rlyeh/category create mode 100644 packages/rlyeh/tokens/rlyeh/category.key create mode 100644 packages/rlyeh/tokens/rlyeh/enc.key create mode 100755 packages/wopr/service/wopr/run diff --git a/packages/crypto/200/index.mdwn b/packages/crypto/200/index.mdwn new file mode 100644 index 0000000..dafffc1 --- /dev/null +++ b/packages/crypto/200/index.mdwn @@ -0,0 +1,2 @@ +
Alice
25 7 49 b 1a 50 27 3d 63 73 3e 4c 1d 17 1b 5b 35 3a 61 7e 7b 53 53 6 b
9 36 37 26 64 7c 42 17 52 c 1d 36 37 26 64 74 45 17 51 5 7 65 72 3f 66
75 1c 2 4b 3 11 3c 77 38 6a 7f 5b 57 5b 3 f 33 32 29 23 6d 5f 5d 4a 48
4d 3c 35 2b 21 23 55 5b 4c 1 54 3c 2f 24 21 35 1c 4c 4d 51 5d 79 3e 6d 3e
3b 59 7d 45 55 5e 20 51 65 21 3b 58 25 4c 1 6 78 51 29 79 72 47 71 9 30
14 67 5 61 55 6d 47 76 e 38 8 2f 19 79 18 7b 5b 6c 14 7a 17 3e 8 34 1b
74 4c 67 47 68 54 38 f 22 48 27 57 63 57 3c 4e 38 d 77 4b 27 4c 65 57 20
49 23 12 3e 4e 2e 3 65 56 2f 5a 23 c 22 f 2d 42 7f e 2f 59 2a 1a 2e 41
3c 52 6e e 35 54 20 b 6b 15 23 49 67 7 35 41 2c 47 6f 54 33 48 69 4f 74
+
Bob
36 d 5 1e 59 16 68 6c 6a 31 73 1a 4c 1d 50 a 36 6c 6a 35 2a 5b 5 d 5d
5e 7b 64 7e 7d 29 1e 8 12 5d 45 7b 7c 32 29 2d 1e 11 12 42 43 71 66 32 36
2b 10 12 12 42 43 75 32 7c 27 3b 1 12 8 4f 49 64 77 28 3f 3c 1e d 44 5a
4f 3e 6c 28 36 6f 4b 1f 4d 45 4f 8 5d e 69 6f 6a 28 7a 49 18 3 5c 12 69
68 71 33 75 1b d 2 40 1c 6d 68 6e 39 3c 0 7 1c 5c 1c 64 6e 7a 3a 75 7
1b 16 4e 55 64 72 66 26 30 16 52 0 53 5e 75 26 69 3c 30 6 8 49 1c 44 6e
6d 69 6f 35 1b 4 1b 1d 50 77 77 3b 7e 22 18 0 1b 1f 56 38 6e 74 70 38 18
diff --git a/packages/mcp/Makefile b/packages/mcp/Makefile deleted file mode 100644 index f46402d..0000000 --- a/packages/mcp/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -SUBDIRS = src -PKGDIR = pkg -PACKAGE = mcp.pkg - -all: package - -package: $(PACKAGE) - -$(PACKAGE): build - mkdir -p $(PKGDIR) - - cp setup $(PKGDIR) - - find bin -not -name '*~' | cpio -p $(PKGDIR) - cp src/in.tokend $(PKGDIR)/bin - cp src/tokencli src/pointscli $(PKGDIR)/bin - cp src/puzzles.cgi $(PKGDIR)/bin - - find service -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR) - - find www -not -name '*~' -not -name '#*' | cpio -p $(PKGDIR) - cp src/puzzler.cgi src/claim.cgi $(PKGDIR)/www - - mksquashfs $(PKGDIR) $(PACKAGE) -all-root -noappend - - -include $(addsuffix /*.mk, $(SUBDIRS)) - -test: build - ./test.sh - -build: $(addsuffix -build, $(SUBDIRS)) -clean: $(addsuffix -clean, $(SUBDIRS)) - rm -rf $(PKGDIR) $(PACKAGE) diff --git a/packages/mcp/fnord.patch b/packages/mcp/fnord.patch new file mode 100644 index 0000000..dc0260f --- /dev/null +++ b/packages/mcp/fnord.patch @@ -0,0 +1,15 @@ +diff -Naur fnord-1.10-orig//httpd.c fnord-1.10/httpd.c +--- fnord-1.10-orig//httpd.c 2011-03-08 22:28:18.000000000 -0700 ++++ fnord-1.10/httpd.c 2011-03-08 22:31:12.000000000 -0700 +@@ -663,8 +663,9 @@ + static char* mimetype="text/plain"; + + static struct mimeentry { const char* name, *type; } mimetab[] = { +- { "html", "text/html" }, +- { "htm", "text/html" }, ++ { "html", "text/html; charset=utf-8" }, ++ { "htm", "text/html; charset=utf-8" }, ++ { "txt", "text/plain; charset=utf-8" }, + { "css", "text/css" }, + { "dvi", "application/x-dvi" }, + { "ps", "application/postscript" }, diff --git a/packages/mcp/mcp.mk b/packages/mcp/mcp.mk index e91d9d8..2aca76a 100644 --- a/packages/mcp/mcp.mk +++ b/packages/mcp/mcp.mk @@ -1,6 +1,30 @@ MCP_PKGDIR = $(TARGET)/mcp +MCP_BUILDDIR = $(BUILD)/mcp -mcp-install: mcp-build +MCP_FNORD_VERSION = 1.10 +MCP_FNORD_TARBALL = fnord-$(MCP_FNORD_VERSION).tar.bz2 +MCP_FNORD_TARCACHE = $(CACHE)/$(MCP_FNORD_TARBALL) +MCP_FNORD_URL = http://www.fefe.de/fnord/$(MCP_FNORD_TARBALL) +MCP_FNORD_SRCDIR = $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION) + +$(MCP_FNORD_TARCACHE): + @ mkdir -p $(@D) + wget -O $@ $(MCP_FNORD_URL) + +mcp-source: $(MCP_BUILDDIR)/source +$(MCP_BUILDDIR)/source: $(MCP_FNORD_TARCACHE) + mkdir -p $(@D) + bzcat $< | (cd $(@D) && tar xf -) + (cd $(@D)/fnord-$(MCP_FNORD_VERSION) && patch -p 1) < packages/mcp/fnord.patch + touch $@ + +mcp-build: $(MCP_BUILDDIR)/build +$(MCP_BUILDDIR)/build: $(MCP_BUILDDIR)/source + $(MAKE) -C packages/mcp/src build + $(MAKE) -C $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION) DIET= CC=$(CC) fnord-cgi + + +mcp-install: $(MCP_BUILDDIR)/build mkdir -p $(MCP_PKGDIR) $(call COPYTREE, packages/mcp/bin, $(MCP_PKGDIR)/bin) @@ -8,6 +32,8 @@ mcp-install: mcp-build cp packages/mcp/src/pointscli $(MCP_PKGDIR)/bin/ cp packages/mcp/src/puzzles.cgi $(MCP_PKGDIR)/bin/ + cp $(MCP_BUILDDIR)/fnord-$(MCP_FNORD_VERSION)/fnord-cgi $(MCP_PKGDIR)/bin/ + $(call COPYTREE, packages/mcp/service, $(MCP_PKGDIR)/service) $(call COPYTREE, packages/mcp/tokend.keys, $(MCP_PKGDIR)/tokend.keys) @@ -20,10 +46,7 @@ mcp-test: mcp-build packages/mcp/test.sh mcp-clean: - rm -rf $(MCP_PKGDIR) + rm -rf $(MCP_PKGDIR) $(MCP_BUILDDIR) $(MAKE) -C packages/mcp/src clean -mcp-build: - $(MAKE) -C packages/mcp/src build - PACKAGES += mcp \ No newline at end of file diff --git a/packages/mcp/service/httpd/run b/packages/mcp/service/httpd/run index 9319dcb..a3b1026 100755 --- a/packages/mcp/service/httpd/run +++ b/packages/mcp/service/httpd/run @@ -14,11 +14,8 @@ for d in /opt/*; do fi done -cd /var/www -exec thttpd -D \ - -h 10.0.0.2 \ - -c "**.cgi" \ - -u ctf \ - -l /proc/self/fd/1 \ - -T UTF-8 \ - -nos + +mkdir -p sites +cd sites +ln -sf /var/www default +exec tcpsvd -u ctf 10.0.0.2 80 /opt/mcp/bin/fnord-cgi diff --git a/packages/mcp/service/tokend/run b/packages/mcp/service/tokend/run index e40b9e5..52860c5 100755 --- a/packages/mcp/service/tokend/run +++ b/packages/mcp/service/tokend/run @@ -2,7 +2,7 @@ exec 2>&1 -ip addr add 10.0.0.2/24 label eth0:mcp dev eth0 +ip addr add 10.0.0.2/16 label eth0:mcp dev eth0 DB=/var/lib/ctf/tokens.db diff --git a/packages/mcp/src/puzzles.cgi.c b/packages/mcp/src/puzzles.cgi.c index 8edf29d..f7efed1 100644 --- a/packages/mcp/src/puzzles.cgi.c +++ b/packages/mcp/src/puzzles.cgi.c @@ -156,7 +156,7 @@ main(int argc, char *argv[]) printf("
%s
\n", cat); printf("
\n"); for (i = 0; i < ncatpoints; i += 1) { - printf(" %ld\n", + printf(" %ld\n", cat, catpoints[i], catpoints[i]); if (catpoints[i] > maxpoints) break; } diff --git a/packages/mcp/www/register.cgi b/packages/mcp/www/register.cgi new file mode 100755 index 0000000..e71c445 --- /dev/null +++ b/packages/mcp/www/register.cgi @@ -0,0 +1,34 @@ +#! /bin/sh -e + +team=$(echo "$QUERY_STRING" | sed -n s'/.*team=\([^&]*\).*/\1/p') +team=$(busybox httpd -d "$team" || echo "$team") + +cat < + + + Team Registration + + + +

Team Registration

+EOF + +if [ ! -w /var/www ] || [ ! -w /var/lib/ctf/teams ]; then + echo "

It looks like the server isn't set up for self-registrations." + echo "Go talk to someone at the head table to register your team.

" +else + echo "

Team name: $team

" + echo -n "
"
+    if /opt/mcp/bin/addteam "$team"; then
+        echo "

Write this hash down. You will use it to claim points.

" + else + echo "Oops, something broke. Better call Neale." + fi +fi +cat < + +EOF diff --git a/packages/mcp/www/register.html b/packages/mcp/www/register.html index b02848d..96257e6 100644 --- a/packages/mcp/www/register.html +++ b/packages/mcp/www/register.html @@ -6,9 +6,14 @@

Team Registration

-
+

+ Please register a team for yourself during this training. This + team is just for the training portion; it will not be the team you + play on during the exercise. +

+ - +
diff --git a/packages/net-re/1200/hint b/packages/net-re/1200/hint deleted file mode 100644 index 387eace..0000000 --- a/packages/net-re/1200/hint +++ /dev/null @@ -1,3 +0,0 @@ -This is a 16-byte xor key. Lots of spaces (0x20). -[55, 56, 59, 64, 71, 80, 91, 104, 119, 136, 155, 176, 199, 224, 251, 24] - diff --git a/packages/net-re/4000/summary b/packages/net-re/4000/summary new file mode 100644 index 0000000..0becd68 --- /dev/null +++ b/packages/net-re/4000/summary @@ -0,0 +1 @@ +PNG transmitted in ICMP payloads diff --git a/packages/net-re/5000/summary b/packages/net-re/5000/summary index 71febf3..ffce12c 100644 --- a/packages/net-re/5000/summary +++ b/packages/net-re/5000/summary @@ -1 +1 @@ -ICMP tunnel, with xor +Horrendously inefficient compression algorithm diff --git a/packages/rlyeh/rlyeh.mk b/packages/rlyeh/rlyeh.mk index 687a43f..08ec44d 100644 --- a/packages/rlyeh/rlyeh.mk +++ b/packages/rlyeh/rlyeh.mk @@ -1,10 +1,14 @@ RLYEH_PKGDIR = $(TARGET)/rlyeh RLYEH_BUILDDIR = $(BUILD)/rlyeh +RLYEH_CACHE = $(CACHE)/rlyeh.git RLYEH_URL = "http://woozle.org/~neale/projects/rlyeh" +$(RLYEH_CACHE): + git clone --bare $(RLYEH_URL) $@ + rlyeh-source: $(RLYEH_BUILDDIR) -$(RLYEH_BUILDDIR): - git clone $(RLYEH_URL) $@ +$(RLYEH_BUILDDIR): $(RLYEH_CACHE) + git clone $< $@ rlyeh-build: rlyeh-source $(MAKE) -C $(RLYEH_BUILDDIR) diff --git a/packages/rlyeh/service/rlyeh/log/run b/packages/rlyeh/service/rlyeh/log/run new file mode 100755 index 0000000..1e7bd9d --- /dev/null +++ b/packages/rlyeh/service/rlyeh/log/run @@ -0,0 +1,3 @@ +#! /bin/sh + +exec svlogd -tt $PWD diff --git a/packages/rlyeh/tokens/rlyeh/category b/packages/rlyeh/tokens/rlyeh/category new file mode 100644 index 0000000..0724055 --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/category @@ -0,0 +1 @@ +rlyeh diff --git a/packages/rlyeh/tokens/rlyeh/category.key b/packages/rlyeh/tokens/rlyeh/category.key new file mode 100644 index 0000000..8d72a26 --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/category.key @@ -0,0 +1 @@ +qVA.SF֨,.} \ No newline at end of file diff --git a/packages/rlyeh/tokens/rlyeh/enc.key b/packages/rlyeh/tokens/rlyeh/enc.key new file mode 100644 index 0000000..34a088b --- /dev/null +++ b/packages/rlyeh/tokens/rlyeh/enc.key @@ -0,0 +1 @@ +7X)> !r|! \ No newline at end of file diff --git a/packages/tanks/tanks.mk b/packages/tanks/tanks.mk index 587513d..9007d20 100644 --- a/packages/tanks/tanks.mk +++ b/packages/tanks/tanks.mk @@ -1,10 +1,14 @@ TANKS_PKGDIR = $(TARGET)/tanks +TANKS_CACHE = $(CACHE)/tanks.git TANKS_BUILDDIR = $(BUILD)/tanks TANKS_URL = "http://woozle.org/~neale/projects/ctanks" +$(TANKS_CACHE): + git clone --bare $(TANKS_URL) $@ + tanks-source: $(TANKS_BUILDDIR) -$(TANKS_BUILDDIR): - git clone $(TANKS_URL) $@ +$(TANKS_BUILDDIR): $(TANKS_CACHE) + git clone $< $@ tanks-build: tanks-source $(MAKE) -C $(TANKS_BUILDDIR) diff --git a/packages/wopr/service/wopr/run b/packages/wopr/service/wopr/run new file mode 100755 index 0000000..09e4d6f --- /dev/null +++ b/packages/wopr/service/wopr/run @@ -0,0 +1,7 @@ +#! /bin/sh + +# Work around busybox bug +chmod a+r /dev/urandom + +mkdir -p /var/tmp/wopr +chown ctf /var/tmp/wopr diff --git a/packages/wopr/wopr.mk b/packages/wopr/wopr.mk index 6f3d09e..9e453f9 100644 --- a/packages/wopr/wopr.mk +++ b/packages/wopr/wopr.mk @@ -8,6 +8,7 @@ wopr-install: packages/wopr/tokens.txt cp packages/wopr/tokens.txt $(WOPR_PKGDIR)/ $(call COPYTREE, packages/wopr/www, $(WOPR_PKGDIR)/www) + $(call COPYTREE, packages/wopr/service, $(WOPR_PKGDIR)/service) wopr-clean: diff --git a/packages/wopr/www/wopr/wopr.cgi b/packages/wopr/www/wopr/wopr.cgi index c35a49e..1a9e382 100755 --- a/packages/wopr/www/wopr/wopr.cgi +++ b/packages/wopr/www/wopr/wopr.cgi @@ -94,7 +94,7 @@ do for i = 1, 4 do seed = seed*256 + string.byte(r:read(1)) end - r:close() + io.close(r) math.randomseed(seed) end