일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- webhacking.kr
- regex
- cryptohack.org
- blind-sqli
- XSS
- cookie
- HTB
- Crypto
- cce2023
- 예전글
- 예전글 #CNN
- web
- blind_sqli
- Bob
- SQLi
- pwn.college
- pwn
- 예전글 #PS
- SECGAME
- PS
- Pwnable.kr
- pwnable
- JS
- 백준
- Today
- Total
목록Study (48)
아모에요
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이라는 함수도 포..
서버에 접속하면 게임을 시작할 수 있다. millionare한테 FLAG를 준다고 하니 돈을 큰 음수만큼 걸고 지면 양수의 돈이 들어올 것이다. 바로 실행해보자. Bet를 -1000000000로 걸고 Hit을 계속했더니 게임에서 졌다. Y를 눌러서 다시하기를 해 보면 플래그가 나온다. YaY_I_AM_A_MILLIONARE_LOL
ssh fd@pwnable.kr -p2222 명령어를 쉘에 입력하고 비번 guest를 치면 pwnable.kr에 fd계정으로 SSH 연결이 된다. ls로 파일을 확인해보니 flag,fd,fd.c가 있다. fd.c 파일을 확인해보면 argv[1]을 int로 바꾼 값에 0x1234를 뺀 값이 fd가 되고 len = read(fd,buf,32) fd=0 인경우 stdin으로 콘솔에 입력되는 값을 버퍼에 저장하므로 argv[1] = fd(0) + 0x1234 = 4660이 된다. ./fd의 인자로 4660을 준 다음 LETMEWIN\n(줄바꿈)을 입력하면 문제가 풀린다.
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)를 실행하면 바로 풀릴 것 같다. 실제로도 실행시 바로 풀리게 된다.
주어진 사이트에 접속하려는데 Access_Denied라 뜨면서 튕겨진다. 프록시로 리퀘스트를 분석해보면 ?getFlag에 접속하면 플래그를 주는 것 같다. 접속해보자. 문제가 바로 풀리게 된다.