From 117e69f842a500b45e04e648292483c7624b5e6f Mon Sep 17 00:00:00 2001 From: Disconnect3d Date: Tue, 22 Nov 2022 21:02:42 +0100 Subject: [PATCH] tests reference-binary.c: dont rely on connect to 1.1.1.1 (#1390) --- setup-dev.sh | 3 +- .../tests/binaries/reference-binary-net.c | 36 +++++++++++++++++++ .../tests/binaries/reference-binary.c | 25 ------------- .../gdb-tests/tests/test_command_procinfo.py | 10 ++++-- 4 files changed, 45 insertions(+), 29 deletions(-) create mode 100644 tests/gdb-tests/tests/binaries/reference-binary-net.c diff --git a/setup-dev.sh b/setup-dev.sh index 90dc0534c..e494a9971 100755 --- a/setup-dev.sh +++ b/setup-dev.sh @@ -91,7 +91,8 @@ install_apt() { curl \ build-essential \ gdb \ - parallel + parallel \ + netcat-openbsd if [[ "$1" == "22.04" ]]; then sudo apt install shfmt diff --git a/tests/gdb-tests/tests/binaries/reference-binary-net.c b/tests/gdb-tests/tests/binaries/reference-binary-net.c new file mode 100644 index 000000000..d50d31e75 --- /dev/null +++ b/tests/gdb-tests/tests/binaries/reference-binary-net.c @@ -0,0 +1,36 @@ +#include +#include + +#define PORT 31337 + +void break_here() {}; + +int main(int argc, char const* argv[]) { + puts("Hello World"); + + int sock = 0, client_fd; + struct sockaddr_in serv_addr; + + if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + perror("socket"); + return -1; + } + + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(PORT); + + if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) { + perror("inet_pton"); + return -1; + } + + if ((client_fd = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0) { + perror("connect"); + return -1; + } + + break_here(); + + close(client_fd); + return 0; +} diff --git a/tests/gdb-tests/tests/binaries/reference-binary.c b/tests/gdb-tests/tests/binaries/reference-binary.c index 4e1caad85..4e6ab0878 100644 --- a/tests/gdb-tests/tests/binaries/reference-binary.c +++ b/tests/gdb-tests/tests/binaries/reference-binary.c @@ -1,36 +1,11 @@ -#include #include -#define PORT 80 - void break_here() {}; int main(int argc, char const* argv[]) { puts("Hello World"); - int sock = 0, client_fd; - struct sockaddr_in serv_addr; - - if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { - perror("socket"); - return -1; - } - - serv_addr.sin_family = AF_INET; - serv_addr.sin_port = htons(PORT); - - if (inet_pton(AF_INET, "1.1.1.1", &serv_addr.sin_addr) <= 0) { - perror("inet_pton"); - return -1; - } - - if ((client_fd = connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))) < 0) { - perror("connect"); - return -1; - } - break_here(); - close(client_fd); return 0; } diff --git a/tests/gdb-tests/tests/test_command_procinfo.py b/tests/gdb-tests/tests/test_command_procinfo.py index 076b36a12..80edaf929 100644 --- a/tests/gdb-tests/tests/test_command_procinfo.py +++ b/tests/gdb-tests/tests/test_command_procinfo.py @@ -1,12 +1,16 @@ +import os + import gdb import tests -REFERENCE_BINARY = tests.binaries.get("reference-binary.out") +REFERENCE_BINARY_NET = tests.binaries.get("reference-binary-net.out") def test_command_procinfo(start_binary): - start_binary(REFERENCE_BINARY) + start_binary(REFERENCE_BINARY_NET) + + os.system("nc -l -p 31337 2>/dev/null 1>&2 &") bin_path = gdb.execute("pi pwndbg.gdblib.proc.exe", to_string=True).strip("\n") pid = gdb.execute("pi pwndbg.gdblib.proc.pid", to_string=True).strip("\n") @@ -19,7 +23,7 @@ def test_command_procinfo(start_binary): assert bin_path in res_list[0] assert pid in res_list[1] - assert "1.1.1.1:80" in result + assert "127.0.0.1:31337" in result def test_command_procinfo_before_binary_start():