• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

rootme задание

  • Автор темы Автор темы addedie
  • Дата начала Дата начала
  • Теги Теги
    rootme

addedie

Well-known member
04.08.2019
157
0
пытаюсь выполнить код
Python:
(base) admix@buben:~/Рабочий стол$ python2
Python 2.7.17 (default, Jan 19 2020, 19:54:54)
[GCC 9.2.1 20200110] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import jwt
>>> private_key = open('mypub.key').read()
>>> token = jwt.encode({'username': 'admix'}, private_key, algorithm='RS256').decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/admix/.local/lib/python2.7/site-packages/jwt/api_jwt.py", line 65, in encode
    json_payload, key, algorithm, headers, json_encoder
  File "/home/admix/.local/lib/python2.7/site-packages/jwt/api_jws.py", line 114, in encode
    signature = alg_obj.sign(signing_input, key)
  File "/home/admix/.local/lib/python2.7/site-packages/jwt/algorithms.py", line 313, in sign
    return key.sign(msg, padding.PKCS1v15(), self.hash_alg())
AttributeError: '_RSAPublicKey' object has no attribute 'sign'
>>> token
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'token' is not defined
>>>
(base) admix@buben:~/Рабочий стол$
это для вот этой стф никак немогу решить задачу помогите кто шарит
private_key это публичный ключ RSA которым надо зашифровать свой юзернейм и отправить на сервак
 
Последнее редактирование:
private_key это публичный ключ RSA которым надо зашифровать свой юзернейм и отправить на сервак
Во-первых, зачем ты используешь устаревший python2?
Вводи python3 и будет тебе счастье.

Во-вторых, тебе компилятор сообщается, что у объекта RSA нет атрибута sign
AttributeError: '_RSAPublicKey' object has no attribute 'sign'
Поэтому он и не создает переменную token, к которой ты потом обращаешься

Чтобы узнать все свойства и поля объекта, прямо в компиляторе вводи
dir(имя_объекта)
06_08-11_0.png
У тебя появится весь доступный список.

Что касается решения,
Python:
import jwt

private_key = b'-----BEGIN PRIVATE KEY-----\nMIGEAgEAMBAGByqGSM49AgEGBS...'
encoded = jwt.encode({'some': 'payload'}, private_key, algorithm='RS256')
Больше инфы смотри в

Если не пользоваться python
Ключи для авторизации хранятся в ~/.ssh/authorized_keys
Так что ты можешь просто дописать последней строкой содержимое твоего файл и не заморачиваться с Python'ом

Есть ещё один более безопасный вариант:

ssh-copy-id -i "здесь указываешь путь к твоему ключу" user@host
В этом случае происходит такая же "дозапись" ключа, но более защищённым способом.
 
Python:
(base) admix@buben:~/Рабочий стол$ python3
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jwt
>>> public_key = open('mypub.txt').read()
>>> token = jwt.encode({'username': 'admix'}, public_key=public, algorithm='RS256').decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'public' is not defined
>>> token
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'token' is not defined
>>>
 
token = jwt.encode({'username': 'admix'}, public_key=public, algorithm='RS256').decode('utf-8')
ты присваиваешь полю public_key значение из переменной public, а ключ ты записываешь в переменную public_key.

Для того, чтобы передать методу какие-то значение, сначала ты указываешь имя, а потом значение.
Python:
def print_my_text(my_text):
    print(my_text)

text_to_print = "Нужно напечатать этот текст"
print_my_text(my_text=text_to_print)
"Нужно напечатать этот текст"

Из-за ошибки переменная token не создаётся вообще, а ты её хочешь потом вызвать.
Читай описание ошибок, там же всё понятно поясняется.
 
так с этим разобрался теперь другой вопрос

кто XSLT ломать умеет?

сервак принимает в переменной название XSL файла, я пробовал передавать файл со своего компа и пробовал с сервера читать флаговый файл но безуспешно

Код:
POST /web-serveur/ch50/ HTTP/1.1
Host: challenge01.root-me.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://challenge01.root-me.org/web-serveur/ch50/
Content-Type: application/x-www-form-urlencoded
Content-Length: 13
Connection: close
Upgrade-Insecure-Requests: 1

xsl=./.passwd


HTML:
<?xml version="1.0" encoding="ISO-8859-1">

<!DOCTYPE request [

    <!ENTITY include SYSTEM "./.passwd">

]>

вот пакет и вот файл который я пытался до этого заинклудить
и вот ошибки сервера

Warning: DOMDocument::load(): I/O warning : failed to load external entity "/challenge/web-serveur/ch50/.passwd" in /challenge/web-serveur/ch50/index.php on line 7
Warning: XSLTProcessor::importStylesheet(): compilation error in /challenge/web-serveur/ch50/index.php on line 11
Warning: XSLTProcessor::importStylesheet(): xsltParseStylesheetProcess : empty stylesheet in /challenge/web-serveur/ch50/index.php on line 11
Warning: XSLTProcessor::transformToXml(): No stylesheet associated to this object in /challenge/web-serveur/ch50/index.php on line 13

кучу вариантов щас перепробовал нифига неподдается
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab