I just want to document this so I have it for the future. Here is a python script I wrote to solve this callenge on tryhack.me
Here are the requirements
You need to write a script that connects to this webserver on the correct port, do an operation on a number and then move onto the next port. Start your original number at 0.
The format is: operation, number, next port.
For example the website might display, add 900 3212 which would be: add 900 and move onto port 3212.
Then if it was minus 212 3499, you'd minus 212 (from the previous number which was 900) and move onto the next port 3499
Do this until you the page response is STOP (or you hit port 9765).
Each port is also only live for 4 seconds. After that it goes to the next port. You might have to wait until port 1337 becomes live again...
Go to: http://<machines_ip>:3010 to start...
General Approach(it's best to do this using the sockets library in Python):
- Create a socket in Python using the sockets library
- Connect to the port
- Send an operation
- View response and continue
I didn't use sockets but it took the better part of two days for me to do this. I'm still working on learning python and the global variables threw me for a while...
ie.
Variables declared out site of functions are global variables that can be used in functions.....
however if you assign a value to that variable inside of a function it is no longer a global varialble but a local variable to that function...
WTF python?
import socket,time,sys,requests
host = "10.10.235.111"
quit = 0
count = 1
Number = 0.0
caught = ""
nextport = 1337
def loopy():
global caught
global nextport
global Number
global quit
caught = ""
NextURL = "http://" + host + ":" +str(nextport)
while True:
try:
r = requests.get(NextURL)
break
except:
pass
caught = r.content
caught = caught.decode("utf-8")
caughtlist = caught.split()
print(caughtlist)
if caughtlist[0] == "add":
Number += float(caughtlist[1])
elif caughtlist[0] == "minus":
Number -= float(caughtlist[1])
elif caughtlist[0] == "multiply":
Number *= float(caughtlist[1])
elif caughtlist[0] == "divide":
Number /= float(caughtlist[1])
elif caughtlist[0] == "STOP":
print("stop Found")
quit = 1
return
else:
print("oopsy")
nextport = caughtlist[2]
print("next port is : " + str(nextport) + " Current Value is : " + str(Number))
print("Starting Waiting for inital port")
while True:
if (quit != 1):
loopy()
else:
break
print("number is : ", + Number)
Comments
Post a Comment