aboutsummaryrefslogtreecommitdiffstats
path: root/service/tests/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'service/tests/test.sh')
-rw-r--r--service/tests/test.sh119
1 files changed, 119 insertions, 0 deletions
diff --git a/service/tests/test.sh b/service/tests/test.sh
new file mode 100644
index 0000000..69e3ea1
--- /dev/null
+++ b/service/tests/test.sh
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+set -e
+
+# RUNTYPE=1
+
+SCRIPTPATH="$(dirname $(readlink -f "$0"))"
+cd "$SCRIPTPATH"
+
+export RESULTDIR="../data/scans"
+export ECHO_INPUT=1
+
+announce() {
+ count=$(echo "$1" | wc -c)
+ python3 -c "
+import math
+s = '$1'
+c = 80
+print()
+print('#'*c)
+print('#' + ' '*math.floor((c - len(s))/2-1) + s + ' '*math.ceil((c - len(s))/2-1) + '#')
+print('#'*c)
+print()
+ "
+}
+
+checkleaks() {
+ valgrind --leak-check=full ./stldoctor 2>&1 | tee /tmp/testlog
+ if [ -z "$(grep "no leaks are possible" /tmp/testlog)" ]; then
+ echo "Valgrind exited with errors!"
+ exit 1
+ fi
+}
+
+connect() {
+ if [ "$RUNTYPE" == "remote" ]; then
+ nc localhost 9000
+ elif [ "$RUNTYPE" == "debug" ]; then
+ checkleaks
+ else
+ ./stldoctor
+ fi
+}
+
+if [ "$1" == "stl" ]; then
+
+ announce "Testing ASCII STL Parsing"
+ (
+ echo "echo"
+ echo "submit"
+ cat tests/sample-ascii.stl | wc -c
+ cat tests/sample-ascii.stl
+ echo "ASCII-testname"
+ ) | checkleaks
+
+ announce "Testing BIN STL Parsing"
+ (
+ echo "echo"
+ echo "submit"
+ cat tests/sample-binary.stl | wc -c
+ cat tests/sample-binary.stl
+ echo "BIN-testname"
+ ) | checkleaks
+
+elif [ "$1" == "poc" ]; then
+
+ announce "Testing Proof-Of-Concept"
+
+ [ ! -z "$RESULTDIR" ] && rm -rf "$RESULTDIR"/*
+
+ echo -e "\n--- Uploading target STL ---\n" 1>&2
+ (
+ echo "echo"
+ echo "submit"
+ cat tests/flag1.stl | wc -c
+ cat tests/flag1.stl
+ echo "N0TaFL4G"
+ echo "exit"
+ ) | connect
+
+ echo -e "\n--- Uploading evil STL ---\n" 1>&2
+ (
+ echo "echo"
+ echo "submit"
+ cat tests/evil1.stl | wc -c
+ cat tests/evil1.stl
+ echo "EV1L"
+ echo "exit"
+ ) | connect
+
+ echo -e "\n--- Testing Exploit ---\n" 1>&2
+ (
+ echo "echo"
+
+ # try index 0
+ echo "query"
+ echo "EV1L"
+ echo "0"
+ echo "n"
+
+ echo "query last"
+ echo "0"
+ echo "n"
+
+ # try index 1
+ echo "query"
+ echo -e "EV1L"
+ echo "0"
+ echo "n"
+
+ echo "query last"
+ echo "1"
+ echo "n"
+ echo "exit"
+ ) | connect
+
+else
+ connect
+fi