일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- JS
- web
- HTB
- regex
- 예전글 #CNN
- cookie
- 백준
- cce2023
- Bob
- blind-sqli
- 예전글 #PS
- pwn
- 예전글
- SECGAME
- pwnable
- SQLi
- webhacking.kr
- cryptohack.org
- PS
- blind_sqli
- pwn.college
- Crypto
- XSS
- Pwnable.kr
- Today
- Total
목록web (27)
아모에요
간단한 SSTI로 풀리는 문제이다. 주어진 사이트에 접속하자마자 flask/jinja2로 개발되었다고 대놓고 SSTI 냄새를 풍긴다. 문제 이름도 templated이다. 아무 문자나 쳐서 사이트에 접속하면 Error 404사이트가 뜨면서 page '입력한 문자열'이 발견되지 않았다고 나온다. {{1+1}}을 대입하면 The page '2' could not be found가 나오면서 SSTI가 터진다. 아무런 보안기법도 걸려있지 않으므로 ''.__class__.__mro__[1].__subclasses__()에서 subprocess.Popen을 실행시켜주면 된다. /%7B%7B''.__class__.__mro__[1].__subclasses__()[414]('cat%20flag.txt',shell=Tru..
level1 curl로 localhost에 요청을 보내면 플래그가 나온다. pwn.college{AX02s7xlfOWQFIqbjnyLsvEWJPN.dhjNyMDL3QTNyMzW}
문제 소스를 보면 [config.php] index.php에서 config.php를 로드한 후 ?url=http(s):// 형태로 GET 요청을 보내면 is_safe_url을 통해서 내부 IP가 아님을 검증한 후 프록시 역할을 하는 서버임을 알 수 있는데, 0.0.0.0은 필터링이 되어있지 않다. ?url=http://0.0.0.0/flag.php를 입력하면 문제가 풀리게 된다.
SSTI로 간단하게 풀리는 문제. main.go 파일의 215줄부터 보면, tmpl := fmt.Sprintf(` -------------------------------------- {{.Name}} {{.Email}} tel : %s `, r.URL.Query().Get("tel")) t, err := template.New("page").Parse(tmpl) if err != nil { fmt.Println(err) } t.Execute(w, &s) %s 형태로 문자열이 들어가는 곳에서 SSTI 취약점이 발생하는 것을 확인할 수 있다. ?tel={{.Email}}을 입력했을 때 이메일이 tel 위치에 출력된다. t.Execute(w,&s)를 통해 전달되는 s구조체에는 LoadFile이라는 함수도 포..
form 안에 id, cmt, captcha의 세 값이 존재하고 submit버튼을 누르면 form이 전송된다. 2초 안에 풀어야 하므로 스크립트를 짜서 개발자 도구로 풀어보자. function solve(){ lv5frm.id.value="dys4nt" lv5frm.cmt.value="asdf"; lv5frm.captcha.value=lv5frm.captcha_.value; lv5frm.submit(); } solve() 문제가 풀리게 된다.
id = admin으로 로그인하면 you are not admin이라 뜨면서 튕겨진다. id = test로 로그인해보면 userid cookie가 설정됨을 알 수 있고, 뒤에 =가 붙어있어 base64형식임을 유추할 수 있다. 이를 decode해보면 128자 길이의 0~9,a~f까지의 문자로 이루어진 문자열이 나오는데 32글자씩 끊어서 해시 Decrypt 사이트에서 검색해보면 각각 t,e,s,t가 나온다. 반대 과정을 거쳐서 admin을 한글자씩 끊어서 HASH화, 그 다음 합쳐서 base64인코딩, 다음으로 url인코딩을 해서 쿠키값에 집어넣으면 문제가 풀리게 된다. 1. md5 encrypt admin -> 0cc175b9c0f1b6a831c399e2697726618277e0910d750195b448..
앞선 문제들과 마찬가지로 스크립트가 주어진다. unlock 값을 콘솔에서 확인한 다음 pw에 넣으면 문제가 풀린다.
문제 소스를 보았을 때, mv(124)를 실행하면 바로 풀릴 것 같다. 실제로도 실행시 바로 풀리게 된다.