@elizaos/sweagent-root 2.0.0-alpha.2 → 2.0.0-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/package.json +5 -5
- package/python/sweagent/agent/models_orchestrator.py +86 -0
- package/python/sweagent/environment/orchestrator.py +117 -0
- package/python/sweagent/run/run_batch.py +1 -1
- package/python/sweagent/run/run_single.py +2 -2
- package/python/tests/test_agent.py +9 -2
- package/python/tests/test_data/trajectories/gpt4__swe-agent-test-repo__default_from_url__t-0.00__p-0.95__c-3.00__install-1/6e44b9__sweagenttestrepo-1c2844.traj +1 -1
- package/python/tests/test_models.py +1 -1
- package/python/tests/test_openai_live.py +2 -2
- package/rust/src/agent/history_processors.rs +12 -4
- package/rust/src/agent/models.rs +2 -2
- package/rust/src/monitoring.rs +8 -2
- package/rust/src/utils/files.rs +13 -1
- package/rust/src/utils/serialization.rs +1 -1
- package/typescript/README.md +8 -8
- package/python/sweagent/agent/extra/shell_agent.py +0 -106
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/Dockerfile +0 -20
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/README.md +0 -13
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/challenge.json +0 -12
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/customrandom.c +0 -50
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/docker-compose.yml +0 -14
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/release +0 -0
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/server +0 -0
- package/python/tests/test_data/data_sources/ctf/crypto/Katy/solver.py +0 -12
- package/python/tests/test_data/data_sources/ctf/forensics/flash/README.md +0 -16
- package/python/tests/test_data/data_sources/ctf/forensics/flash/challenge.json +0 -9
- package/python/tests/test_data/data_sources/ctf/forensics/flash/flash_c8429a430278283c0e571baebca3d139.zip +0 -0
- package/python/tests/test_data/data_sources/ctf/misc/networking_1/README.md +0 -15
- package/python/tests/test_data/data_sources/ctf/misc/networking_1/challenge.json +0 -10
- package/python/tests/test_data/data_sources/ctf/misc/networking_1/networking.pcap +0 -0
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/Dockerfile +0 -28
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/README.md +0 -14
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/challenge.json +0 -14
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/docker-compose.yml +0 -14
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/flag.txt +0 -1
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup +0 -0
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup.c +0 -26
- package/python/tests/test_data/data_sources/ctf/pwn/warmup/warmup.py +0 -9
- package/python/tests/test_data/data_sources/ctf/rev/rock/README.md +0 -14
- package/python/tests/test_data/data_sources/ctf/rev/rock/challenge.json +0 -8
- package/python/tests/test_data/data_sources/ctf/rev/rock/rock +0 -0
- package/python/tests/test_data/data_sources/ctf/rev/rock/rock.cpp +0 -167
- package/python/tests/test_data/data_sources/ctf/rev/rock/solution.cpp +0 -24
- package/python/tests/test_data/data_sources/ctf/rev/rock/test_solver/solution.py +0 -6
- package/python/tests/test_data/data_sources/ctf/rev/rock/test_solver/test.sh +0 -10
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/000-default.conf +0 -18
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/Dockerfile +0 -20
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/file.pl +0 -38
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/forms.pl +0 -40
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/cgi/hello.pl +0 -11
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/challenge.json +0 -12
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/docker-compose.yml +0 -14
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/flag +0 -1
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/index.html +0 -11
- package/python/tests/test_data/data_sources/ctf/web/i_got_id_demo/solution.txt +0 -1
- package/python/trajectories/demonstrations/ctf/crypto/BabyEncryption.traj +0 -318
- package/python/trajectories/demonstrations/ctf/crypto/BabyTimeCapsule.traj +0 -197
- package/python/trajectories/demonstrations/ctf/crypto/eps.traj +0 -289
- package/python/trajectories/demonstrations/ctf/crypto/katy.traj +0 -368
- package/python/trajectories/demonstrations/ctf/forensics/flash.traj +0 -102
- package/python/trajectories/demonstrations/ctf/misc/networking_1.traj +0 -102
- package/python/trajectories/demonstrations/ctf/pwn/warmup.traj +0 -159
- package/python/trajectories/demonstrations/ctf/rev/rock.traj +0 -251
- package/python/trajectories/demonstrations/ctf/web/i_got_id_demo.traj +0 -422
- package/python/trajectories/demonstrations/function_calling_simple.traj +0 -151
- package/python/trajectories/demonstrations/human_thought__swe-bench-HumanEvalFix-python__lcb__t-0.00__p-0.95__c-4.00__install-0/humanevalfix-python-0.traj +0 -129
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/marshmallow-code__marshmallow-1867.traj +0 -318
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_cursors_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +0 -251
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__default_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +0 -399
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling__install-1/marshmallow-code__marshmallow-1867.traj +0 -594
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace__install-1/marshmallow-code__marshmallow-1867.traj +0 -592
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__function_calling_replace_from_source/marshmallow-code__marshmallow-1867.traj +0 -3316
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__xml_sys-env_cursors_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +0 -251
- package/python/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867__xml_sys-env_window100__t-0.20__p-0.95__c-2.00__install-1/marshmallow-code__marshmallow-1867.traj +0 -399
- package/python/trajectories/demonstrations/str_replace_anthropic_demo.yaml +0 -432
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
#include <stdio.h>
|
|
2
|
-
#include <stdlib.h>
|
|
3
|
-
#include <stdint.h>
|
|
4
|
-
#include <string.h>
|
|
5
|
-
#include <math.h>
|
|
6
|
-
|
|
7
|
-
static uint64_t seed;
|
|
8
|
-
|
|
9
|
-
uint64_t next_cypher(uint64_t range)
|
|
10
|
-
{
|
|
11
|
-
seed =(seed * 25214903917 + 11) % (uint64_t) (pow(2,48));
|
|
12
|
-
return seed;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
uint64_t _hash(char *str)
|
|
16
|
-
{
|
|
17
|
-
uint64_t len = strlen(str);
|
|
18
|
-
uint64_t hash = 0;
|
|
19
|
-
for (int i = 0; i < len; i++) {
|
|
20
|
-
hash += str[i] * pow(2, i);
|
|
21
|
-
}
|
|
22
|
-
return hash;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
int main(int argc, char *argv[])
|
|
26
|
-
{
|
|
27
|
-
// char *flag = "flag{praise_rnjesus}";
|
|
28
|
-
char *flag = "flag{xxxxxxxxxxxxxx}";
|
|
29
|
-
seed = _hash(flag);
|
|
30
|
-
int start = seed;
|
|
31
|
-
|
|
32
|
-
printf("----Totally Random Number Generator----\n");
|
|
33
|
-
printf("Press ENTER to continue");
|
|
34
|
-
fflush(stdout);
|
|
35
|
-
|
|
36
|
-
for (size_t i = 0; i < 16; i++) {
|
|
37
|
-
getchar();
|
|
38
|
-
printf("4\n");
|
|
39
|
-
fflush(stdout);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
while (1) {
|
|
44
|
-
getchar();
|
|
45
|
-
printf("%d\n", next_cypher(UINT32_MAX));
|
|
46
|
-
fflush(stdout);
|
|
47
|
-
}
|
|
48
|
-
return 0;
|
|
49
|
-
}
|
|
50
|
-
|
|
Binary file
|
|
Binary file
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
from z3 import *
|
|
2
|
-
|
|
3
|
-
s = Solver()
|
|
4
|
-
ret = BitVecVal(0, 32)
|
|
5
|
-
seed = BitVec('seed', 32)
|
|
6
|
-
ret = 25214903917 * seed + 11
|
|
7
|
-
ret = ret & 0xFFFFFFFFFFFF
|
|
8
|
-
s.add(ret == 1364650861) # This comment shows possible seeds: 1364650861, 1208101748
|
|
9
|
-
|
|
10
|
-
if s.check() == sat:
|
|
11
|
-
model = s.model()
|
|
12
|
-
print(model[seed])
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Flash
|
|
2
|
-
|
|
3
|
-
## Author
|
|
4
|
-
Budofsky
|
|
5
|
-
## Points
|
|
6
|
-
100
|
|
7
|
-
## Category
|
|
8
|
-
Forensics
|
|
9
|
-
## Description
|
|
10
|
-
We were able to grab an image of a harddrive. Find out what's on it.
|
|
11
|
-
## Flag
|
|
12
|
-
`flag{b3l0w_th3_r4dar}`
|
|
13
|
-
## Solution
|
|
14
|
-
|
|
15
|
-
## Setup
|
|
16
|
-
Distribute `flash_c8429a430278283c0e571baebca3d139.zip`
|
|
Binary file
|
|
Binary file
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
FROM ubuntu:14.04
|
|
2
|
-
MAINTAINER unknonwn
|
|
3
|
-
LABEL Description="CSAW 2016 WarmUp" VERSION='1.0'
|
|
4
|
-
|
|
5
|
-
#installation
|
|
6
|
-
RUN apt-get update && apt-get upgrade -y
|
|
7
|
-
RUN apt-get install -y build-essential socat
|
|
8
|
-
|
|
9
|
-
#user
|
|
10
|
-
RUN adduser --disabled-password --gecos '' warmup
|
|
11
|
-
RUN chown -R root:warmup /home/warmup/
|
|
12
|
-
RUN chmod 750 /home/warmup
|
|
13
|
-
RUN touch /home/warmup/flag.txt
|
|
14
|
-
RUN chown root:warmup /home/warmup/flag.txt
|
|
15
|
-
RUN chmod 440 /home/warmup/flag.txt
|
|
16
|
-
RUN chmod 740 /usr/bin/top
|
|
17
|
-
RUN chmod 740 /bin/ps
|
|
18
|
-
RUN chmod 740 /usr/bin/pgrep
|
|
19
|
-
RUN export TERM=xterm
|
|
20
|
-
|
|
21
|
-
WORKDIR /home/warmup/
|
|
22
|
-
COPY warmup.c /home/warmup
|
|
23
|
-
COPY flag.txt /home/warmup
|
|
24
|
-
|
|
25
|
-
RUN gcc -Wall -fno-stack-protector -o warmup warmup.c
|
|
26
|
-
|
|
27
|
-
EXPOSE 8000
|
|
28
|
-
CMD su warmup -c "socat -T10 TCP-LISTEN:8000,reuseaddr,fork EXEC:/home/warmup/warmup"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "WarmUp",
|
|
3
|
-
"category": "pwn",
|
|
4
|
-
"description": "So you want to be a pwn-er huh? Well let's throw you an easy one ;)",
|
|
5
|
-
"flag": "FLAG{LET_US_BEGIN_CSAW_2016}",
|
|
6
|
-
"points": 50,
|
|
7
|
-
"box": "pwn.chal.csaw.io",
|
|
8
|
-
"compose": true,
|
|
9
|
-
"internal_port": 8000,
|
|
10
|
-
"files": [
|
|
11
|
-
"warmup",
|
|
12
|
-
"warmup.c"
|
|
13
|
-
]
|
|
14
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
FLAG{LET_US_BEGIN_CSAW_2016}
|
|
Binary file
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
#define _GNU_SOURCE
|
|
2
|
-
#include <stdio.h>
|
|
3
|
-
#include <stdlib.h>
|
|
4
|
-
#include <string.h>
|
|
5
|
-
#include <dlfcn.h>
|
|
6
|
-
#include <signal.h>
|
|
7
|
-
#include <unistd.h>
|
|
8
|
-
|
|
9
|
-
void easy(){
|
|
10
|
-
|
|
11
|
-
system("cat flag.txt");
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
int main(){
|
|
16
|
-
char buffer[50];
|
|
17
|
-
write(1,"-Warm Up-\n",10);
|
|
18
|
-
char address[50];
|
|
19
|
-
write(1,"WOW:",4);
|
|
20
|
-
sprintf(address,"%p\n",easy);
|
|
21
|
-
write(1,address,9);
|
|
22
|
-
write(1,">",1);
|
|
23
|
-
gets(buffer);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
Binary file
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
#include <string>
|
|
2
|
-
#include <iostream>
|
|
3
|
-
#include <algorithm>
|
|
4
|
-
#include <fstream>
|
|
5
|
-
|
|
6
|
-
using namespace std;
|
|
7
|
-
|
|
8
|
-
class DarkTemplar{
|
|
9
|
-
|
|
10
|
-
public:
|
|
11
|
-
virtual int getSerial() = 0;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class HighTemplar: public DarkTemplar{
|
|
19
|
-
public:
|
|
20
|
-
HighTemplar(const string& solution) : solution(solution),rock_flag(solution){}
|
|
21
|
-
|
|
22
|
-
void calculate(){
|
|
23
|
-
if (solution.length() != 30){
|
|
24
|
-
cout << "Too short or too long" << endl;
|
|
25
|
-
exit(-1);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
for(int i =0;i <= solution.length();i++){
|
|
31
|
-
solution[i] = char((solution[i]^0x50)+(20%25));
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
for(int i =0; i <= solution.length();i++){
|
|
36
|
-
solution[i] = char((solution[i] ^ 0x10)+(265%999));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
int getSerial(){
|
|
42
|
-
for(int i = 0;i< solution.length();i++){
|
|
43
|
-
if (answer[i] == solution[i]){
|
|
44
|
-
cout << "Pass " << i << endl;
|
|
45
|
-
}else{
|
|
46
|
-
cout << "You did not pass " << i << endl;
|
|
47
|
-
flag = 1;
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return flag;
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
string getFlag(){
|
|
58
|
-
|
|
59
|
-
return rock_flag;
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
private:
|
|
64
|
-
int value;
|
|
65
|
-
int flag = 0;
|
|
66
|
-
string solution;
|
|
67
|
-
string rock_flag;
|
|
68
|
-
string answer = "FLAG23456912365453475897834567";
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
struct Node{
|
|
74
|
-
public:
|
|
75
|
-
Node(const char& character) : str(character){}
|
|
76
|
-
|
|
77
|
-
char str;
|
|
78
|
-
Node* prev;
|
|
79
|
-
Node *next;
|
|
80
|
-
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
void func3(string prevent,int i){
|
|
85
|
-
if (prevent[i] != '\0'){
|
|
86
|
-
prevent[i] = char((prevent[i] ^ 0x20)+35);
|
|
87
|
-
i += 1;
|
|
88
|
-
func3(prevent,i);
|
|
89
|
-
}else{
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
string func2(string prevent){
|
|
96
|
-
|
|
97
|
-
for(int i = 0;i < prevent.length();i++){
|
|
98
|
-
|
|
99
|
-
prevent[i] = char((prevent[i] ^ 0x50)+(50%25));
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return prevent;
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
string func1(string prevent){
|
|
108
|
-
|
|
109
|
-
Node * root = new Node('R');
|
|
110
|
-
Node * tmp = root;
|
|
111
|
-
string payload;
|
|
112
|
-
|
|
113
|
-
for(int i = 0; i < prevent.length();i++){
|
|
114
|
-
tmp->next = new Node(prevent[i]);
|
|
115
|
-
tmp = tmp->next;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
while(root->next != nullptr){
|
|
120
|
-
root = root->next;
|
|
121
|
-
payload += root->str;
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return payload;
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
int main(){
|
|
130
|
-
string prevent;
|
|
131
|
-
int val = 0;
|
|
132
|
-
|
|
133
|
-
cin >> prevent;
|
|
134
|
-
|
|
135
|
-
cout << "-------------------------------------------" << endl;
|
|
136
|
-
cout << "Quote from people's champ" << endl;
|
|
137
|
-
cout << "-------------------------------------------" << endl;
|
|
138
|
-
cout << "*My goal was never to be the loudest or the craziest. It was to be the most entertaining." << endl;
|
|
139
|
-
cout << "*Wrestling was like stand-up comedy for me." << endl;
|
|
140
|
-
cout << "*I like to use the hard times in the past to motivate me today." << endl;
|
|
141
|
-
cout << "-------------------------------------------" << endl;
|
|
142
|
-
|
|
143
|
-
HighTemplar high(prevent);
|
|
144
|
-
cout << "Checking...." << endl;
|
|
145
|
-
|
|
146
|
-
func3(func2(func1(prevent)),val);
|
|
147
|
-
|
|
148
|
-
high.calculate();
|
|
149
|
-
|
|
150
|
-
if(!(high.getSerial())){
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
cout << "/////////////////////////////////" << endl;
|
|
154
|
-
cout << "Do not be angry. Happy Hacking :)" << endl;
|
|
155
|
-
cout << "/////////////////////////////////" << endl;
|
|
156
|
-
|
|
157
|
-
cout << "Flag{" << high.getFlag() << "}" << endl;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return 0;
|
|
167
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#include <string>
|
|
2
|
-
#include <iostream>
|
|
3
|
-
|
|
4
|
-
using namespace std;
|
|
5
|
-
|
|
6
|
-
int main(){
|
|
7
|
-
string solution = "FLAG23456912365453475897834567";
|
|
8
|
-
for(int i =0; i <= solution.length();i++){
|
|
9
|
-
cout << i << " " << solution[i] << " " << ((int) solution[i]);
|
|
10
|
-
solution[i] = char(((solution[i]-(265%999))^0x10));
|
|
11
|
-
cout << " " << solution[i] << " " << ((int) solution[i]) << endl;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
for(int j =0; j <= solution.length();j++){
|
|
15
|
-
cout << j << " " << solution[j] << " " << ((int) solution[j]);
|
|
16
|
-
solution[j] = char((solution[j] - 20)^0x50);
|
|
17
|
-
cout << " " << solution[j] << " " << ((int) solution[j]) << endl;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
cout << "FLAG:" << solution << endl;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<VirtualHost *:8000>
|
|
2
|
-
ServerName localhost
|
|
3
|
-
|
|
4
|
-
DocumentRoot /var/www/html
|
|
5
|
-
|
|
6
|
-
ErrorLog ${APACHE_LOG_DIR}/error.log
|
|
7
|
-
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
|
8
|
-
|
|
9
|
-
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
|
|
10
|
-
TimeOut 5
|
|
11
|
-
|
|
12
|
-
<Directory /var/www/cgi-bin/>
|
|
13
|
-
Options ExecCGI
|
|
14
|
-
AddHandler cgi-script .cgi .pl
|
|
15
|
-
</Directory>
|
|
16
|
-
</VirtualHost>
|
|
17
|
-
|
|
18
|
-
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
FROM ubuntu:16.04
|
|
2
|
-
|
|
3
|
-
RUN apt-get update && apt-get upgrade -y
|
|
4
|
-
RUN apt-get install -y apache2 libapache2-mod-perl2 build-essential
|
|
5
|
-
RUN cpan install CGI
|
|
6
|
-
RUN a2enmod cgi
|
|
7
|
-
|
|
8
|
-
RUN echo "Listen 8000" >> /etc/apache2/ports.conf
|
|
9
|
-
COPY ./000-default.conf /etc/apache2/sites-available/
|
|
10
|
-
COPY ./index.html /var/www/html
|
|
11
|
-
|
|
12
|
-
COPY ./cgi /var/www/cgi-bin
|
|
13
|
-
RUN chmod +x /var/www/cgi-bin/*
|
|
14
|
-
|
|
15
|
-
COPY ./flag /
|
|
16
|
-
|
|
17
|
-
RUN service apache2 stop
|
|
18
|
-
|
|
19
|
-
EXPOSE 8000
|
|
20
|
-
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/perl
|
|
2
|
-
|
|
3
|
-
use strict;
|
|
4
|
-
use warnings;
|
|
5
|
-
use CGI;
|
|
6
|
-
|
|
7
|
-
my $cgi = CGI->new;
|
|
8
|
-
|
|
9
|
-
print $cgi->header;
|
|
10
|
-
|
|
11
|
-
print << "EndOfHTML";
|
|
12
|
-
<!DOCTYPE html
|
|
13
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
14
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|
|
15
|
-
>
|
|
16
|
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
|
|
17
|
-
<head>
|
|
18
|
-
<title>Perl File Upload</title>
|
|
19
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
20
|
-
</head>
|
|
21
|
-
<body>
|
|
22
|
-
<h1>Perl File Upload</h1>
|
|
23
|
-
<form method="post" enctype="multipart/form-data">
|
|
24
|
-
File: <input type="file" name="file" />
|
|
25
|
-
<input type="submit" name="Submit!" value="Submit!" />
|
|
26
|
-
</form>
|
|
27
|
-
<hr />
|
|
28
|
-
EndOfHTML
|
|
29
|
-
|
|
30
|
-
if ($cgi->upload('file')) {
|
|
31
|
-
my $file = $cgi->param('file');
|
|
32
|
-
while (<$file>) {
|
|
33
|
-
print "$_";
|
|
34
|
-
print "<br />";
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
print '</body></html>';
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env perl
|
|
2
|
-
|
|
3
|
-
use strict;
|
|
4
|
-
use warnings;
|
|
5
|
-
|
|
6
|
-
use CGI;
|
|
7
|
-
|
|
8
|
-
my $cgi = CGI->new;
|
|
9
|
-
|
|
10
|
-
print $cgi->header('text/html');
|
|
11
|
-
|
|
12
|
-
print << "EndOfHTML";
|
|
13
|
-
<!DOCTYPE html
|
|
14
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
15
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|
|
16
|
-
>
|
|
17
|
-
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
|
|
18
|
-
<head>
|
|
19
|
-
<title>A Simple CGI Page</title>
|
|
20
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
21
|
-
</head>
|
|
22
|
-
<body>
|
|
23
|
-
<h1>A Simple CGI Page</h1>
|
|
24
|
-
<form method="post" enctype="multipart/form-data">
|
|
25
|
-
Name: <input type="text" name="name" /><br />
|
|
26
|
-
Age: <input type="text" name="age" /><p />
|
|
27
|
-
<input type="submit" name="Submit!" value="Submit!" />
|
|
28
|
-
</form>
|
|
29
|
-
<hr />
|
|
30
|
-
EndOfHTML
|
|
31
|
-
|
|
32
|
-
if ( my $name = $cgi->param('name') ) {
|
|
33
|
-
print "Your name is $name.<br />";
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if ( my $age = $cgi->param('age') ) {
|
|
37
|
-
print "You are $age years old.";
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
print '</body></html>';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "I Got Id",
|
|
3
|
-
"category": "web",
|
|
4
|
-
"description": "Wtf... I literally just setup this website and it's already popped...",
|
|
5
|
-
"box": "web.chal.csaw.io",
|
|
6
|
-
"files":[
|
|
7
|
-
|
|
8
|
-
],
|
|
9
|
-
"internal_port": 8000,
|
|
10
|
-
"compose": true,
|
|
11
|
-
"flag": "FLAG{p3rl_6_iz_EVEN_BETTER!!1}"
|
|
12
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
FLAG{p3rl_6_iz_EVEN_BETTER!!1}
|