coding level1과 비슷하게 알수없는 숫자들과 답을 적는란이 있습니다.


동일하게 5초의 시간이 주어지고 있으니 똑같이 level1의 코드와 비슷할 것으로 보입니다.



우선 어떤 알고리즘을 통해 저 문자열이 되었는지 알아내기 위해 알려준 곳으로 이동해봅니다.



① 33이 1이되고 34가 2가 되는 걸 보니 Ascii 값의서 -32를 합니다.

② 새로 생긴 Ascii 값을 가지고, 눈으로 보이는 모든  Ascii 값 중 눈에 보이는 갯수만큼에서 빼라고합니다.

③ 띄어쓰기는 아무것도 표시하지 않고 비워줍니다.


이 것으로 봤을때 알고리즘은 다음과 같습니다.


  old (암호화 전)

  new = old -32 

  total_Ascii - new = payload



  old: 암호화 하기전 값

  new: 새로운 Ascii값

  total_Ascii: 눈에 보이는 모든 Ascii 값들

  payload: 암호문으로 나와있는 값

  

여기서 total_Ascii값은 Ascii 코드 128개중 눈으로 볼수 있는 알파벳 대/소문자, 특수문자, 숫자가 됩니다. (총 94개)


결국 우리가 구하려는 old = 126 - payload 이 됩니다.


이 정보를 가지고 코딩을 하면 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
payload = '43,61,37,43, ,54,57,44, ,53,48,42,47, ,47,56,42,57,48, '
payload += ',61,50,43,47, ,39,54,47,49, ,59,61,48,48,47,42, ,42,39,61,43, '
payload += ',60,57,57,48, ,57,50,43,57, ,39,53,42,54, ,47,56,56'
payload = payload.split(',')
 
result = ''
for i in range(len(payload)):
    if payload[i] != ' ':
        result += chr(126-int(payload[i]))
    else:
        result += ' '
 
print(result)
cs


실행하면 다음과 같은 읽을 수 있는 문자열이 됩니다.


SAYS HER INTO OFTEN ALSO WHOM CANNOT TWAS BEEN ELSE WITH OFF


이제 level1과 같이 requests를 이용해서 코드를 짜보면 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import requests
from bs4 import BeautifulSoup
 
url = 'https://www.hackthis.co.uk/levels/coding/2'
 
LOGIN_INFO = {
    'username''YourID',
    'password''YourPWD'
}
 
with requests.Session() as s:
    login_req = s.post('https://www.hackthis.co.uk/?login', data=LOGIN_INFO)
 
    req = s.post(url)
    html = req.text
    soup = BeautifulSoup(html, 'html.parser')
    textarea = soup.find('textarea')
    
    payload = textarea.string.split(',')
    data = ''
    for i in range(len(payload)):
        if payload[i] != ' ':
            data += chr(126-int(payload[i])) #94+32
        else:
            data += ' '
            
    data = {'answer':data}
    s.post(url, data=data)
cs


이대로 실행해보면 ... 왠지 모르지만 성공을 하지 않습니다... 


그렇게 몇번 실행해보고 생각해보니 혹시 대문자여서 안되나 싶어서 +32를 더 시켜 소문자로 만들어서 실행해보니


성공하게 되었습니다... 흠..


(해석을 못해서..?)





'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Basic+ level2  (0) 2018.08.29
[HackThis] Main level7  (0) 2018.08.29
[HackThis] Coding level1  (0) 2018.08.28
[HackThis] Crypt level5  (0) 2018.08.26
[HackThis] Crypt level4  (0) 2018.08.26

+ Recent posts