일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pwn.college
- Crypto
- PS
- web
- pwnable
- cce2023
- HTB
- webhacking.kr
- 예전글
- cookie
- blind-sqli
- cryptohack.org
- pwn
- 백준
- SECGAME
- Bob
- 예전글 #CNN
- JS
- blind_sqli
- regex
- 예전글 #PS
- SQLi
- Pwnable.kr
- XSS
- Today
- Total
목록Study/Hacking (40)
아모에요
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
문제 소스를 보면 [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이라는 함수도 포..
서버에 접속하면 게임을 시작할 수 있다. 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() 문제가 풀리게 된다.