일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Bob
- PS
- regex
- 예전글
- blind-sqli
- cryptohack.org
- web
- pwnable
- 백준
- Pwnable.kr
- 예전글 #PS
- webhacking.kr
- HTB
- SECGAME
- 예전글 #CNN
- XSS
- SQLi
- pwn
- cce2023
- blind_sqli
- pwn.college
- JS
- cookie
- Crypto
- Today
- Total
목록2023/06 (34)
아모에요
보호되어 있는 글입니다.
f32로 제출하면 오차범위에 의해서 틀렸다고 채점된다. 1 2 3 4 5 6 7 8 9 10 use std::io; fn main(){ let mut s = String::new(); io::stdin().read_line(&mut s).unwrap(); let li: Vec = s.split_whitespace().collect(); let a = li[0].parse::().unwrap(); let b = li[1].parse::().unwrap(); println!("{}",a/b) } Colored by Color Scripter cs
unwrap()를 안해줬더니 컴파일 시 에러가 발생한다. 1 2 3 4 5 6 7 8 9 10 use std::io; fn main(){ let mut s = String::new(); io::stdin().read_line(&mut s).unwrap(); let li: Vec = s.split_whitespace().collect(); let a = li[0].parse::().unwrap(); let b = li[1].parse::().unwrap(); println!("{}",a-b); } Colored by Color Scripter cs
ID dys4nt로 새로운 백준 PS 계정을 만들었다. Rust 언어를 공부할 겸 Rust로 solved.ac CLASS들을 깨보겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 use std::io; fn main(){ let mut s = String::new(); io::stdin().read_line(&mut s); let li = s.split_whitespace(); let mut x: i32 = 0; for num in li{ x += num.parse::().unwrap(); } println!("{}",x); } Colored by Color Scripter cs use std::io를 이용해서 stdin, stdout를 사용한다. mutable(가변) 변수 s를 Stri..
문제 소스를 보면 [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() 문제가 풀리게 된다.
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..