enowars5-service-stldoctor

STL-Analyzing A/D Service for ENOWARS5 in 2021
git clone https://git.sinitax.com/sinitax/enowars5-service-stldoctor
Log | Files | Refs | README | LICENSE | sfeed.txt

commit cc1bbb8f1e827863b679932496cf06fa3d5bf81a
parent a0bd3d833d916cadd23d17d0b3784e28c729967d
Author: Louis Burda <quent.burda@gmail.com>
Date:   Thu, 24 Jun 2021 11:32:26 +0200

bumped enochecker to handle closed connections correctly, fixed added code that prevented exploiting flagstore 2

Diffstat:
Mchecker/src/checker.py | 2+-
Mchecker/src/requirements.txt | 2+-
Mservice/src/main.c | 8+++++---
Msrc/main.c | 8+++++---
4 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/checker/src/checker.py b/checker/src/checker.py @@ -371,7 +371,7 @@ class STLDoctorChecker(BaseChecker): self.debug(b"Retrieving file " + fhash + b" at index " + index_dict[fhash]) conn.write(index_dict[fhash] + b"\ny\n") fileinfo = conn.recvuntil(self.prompt) - # self.debug("File contents:\n" + fileinfo.decode("latin1")) + #self.debug("File contents:\n" + fileinfo.decode("latin1")) found = self.search_flag_bytes(fileinfo) if found is not None or i == len(targets) - 1: break diff --git a/checker/src/requirements.txt b/checker/src/requirements.txt @@ -4,7 +4,7 @@ click==7.1.2 dnspython==1.16.0 # enochecker==0.4.2 # git+https://github.com/enowars/enochecker@37981175f3125bd552c3c351494186fe9ce35e0b -git+https://github.com/Sinitax/enochecker@3bd2e698e9421f4a67e60a2377ac6f40e65b18a7 +git+https://github.com/Sinitax/enochecker@f04cab0fd57fbc927809e88c97a1dd37579089ee enochecker-cli==0.7.0 enochecker-core==0.10.0 eventlet==0.30.2 diff --git a/service/src/main.c b/service/src/main.c @@ -204,7 +204,7 @@ search_cmd(const char *arg) dirstart = telldir(d); for (pathc = 0; (de = readdir(d));) { if (access_authorized(de->d_name) - && !strpfcmp(hash, de->d_name + loggedin)) { + && !strpfcmp(hash, de->d_name + (loggedin ? 1 : 0))) { printf("%i : %s\n", pathc, de->d_name); paths[pathc++] = checkp(strdup(de->d_name)); if (pathc == pathcap) { @@ -347,15 +347,17 @@ cleanexit() int main() { - const char *cmd; + const char *cmd, *envstr; char *cp, *arg; int exit, i, cmdlen; - if (!(resultdir = checkp(strdup(getenv("RESULTDIR"))))) { + if (!(envstr = getenv("RESULTDIR"))) { printf("RESULTDIR not defined\n"); return 1; } + resultdir = checkp(strdup(envstr)); + setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); diff --git a/src/main.c b/src/main.c @@ -204,7 +204,7 @@ search_cmd(const char *arg) dirstart = telldir(d); for (pathc = 0; (de = readdir(d));) { if (access_authorized(de->d_name) - && !strpfcmp(hash, de->d_name + loggedin)) { + && !strpfcmp(hash, de->d_name + (loggedin ? 1 : 0))) { printf("%i : %s\n", pathc, de->d_name); paths[pathc++] = checkp(strdup(de->d_name)); if (pathc == pathcap) { @@ -347,15 +347,17 @@ cleanexit() int main() { - const char *cmd; + const char *cmd, *envstr; char *cp, *arg; int exit, i, cmdlen; - if (!(resultdir = checkp(strdup(getenv("RESULTDIR"))))) { + if (!(envstr = getenv("RESULTDIR"))) { fprintf(stderr, "RESULTDIR not defined\n"); return 1; } + resultdir = checkp(strdup(envstr)); + setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0);