일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- cookie
- blind-sqli
- 예전글
- regex
- Pwnable.kr
- PS
- web
- cce2023
- HTB
- blind_sqli
- cryptohack.org
- pwn
- XSS
- JS
- SECGAME
- 예전글 #PS
- 백준
- pwnable
- 예전글 #CNN
- webhacking.kr
- Bob
- SQLi
- pwn.college
- Crypto
- Today
- Total
목록web (27)
아모에요
문제 소스를 보면 base64로 20번 인코딩하고 문자열을 치환한 값이 쿠키에 저장된다. 이를 역산한 값이 admin, nimda이면 문제가 풀린다. 어렵지 않게 이를 코드로 짤 수 있다. admin, nimda를 20번 인코딩한 값은 import base64 def encode(text): text_bytes = text.encode('ascii') text_base64 = base64.b64encode(text_bytes) tb64str = text_base64.decode('ascii') return tb64str id = "admin" pw = "nimda" for i in range(20): id = encode(id) pw = encode(pw) print(id) print(pw) 의 코드로 ..
접속하면 login, join 두개의 버튼이 존재하고 join은 작동을 안한다. login.php에 들어가봐서 온갖 SQLi를 시도해도 먹히지 않는다. 뭔가 힌트를 얻을 수 있을까 싶어 /web-05/mem/에 접속해보았더니 보이지 않던 join.php가 존재함을 알 수 있다. join.php에는 괴상한 자바스크립트가 존재하는데 이를 뷰티파이어에 넣고 분석해보자. l = 'a'; ll = 'b'; lll = 'c'; llll = 'd'; lllll = 'e'; llllll = 'f'; lllllll = 'g'; llllllll = 'h'; lllllllll = 'i'; llllllllll = 'j'; lllllllllll = 'k'; llllllllllll = 'l'; llllllll..
문제 소스를 보면 hash가 (1000000~99999999)salt_for_you 형태의 값으로 결정되고 이를 500번 sha1 해시화한 것이 표시되는 해시값이다. 10000000~19999999 까지의 해시값의 앞 8글자정도만 구한 다음에 이 데이터와 맞는 숫자를 대입해주면 문제가 풀린다. [hash.txt를 생성하는 코드] import hashlib import tqdm f = open("./hash.txt","w") for i in tqdm.tqdm(range(10000000,20000000)): sess = str(i) + "salt_for_you" res = sess for j in range(500): res = hashlib.sha1(res.encode("ascii")).hexdigest(..
사이트에 접속하면 노노그램이 주어진다. 이를 해결하면 로그를 위해서 이름을 입력하라고 나온다. 이름을 입력한 뒤 submit를 누르면 POST 요청이 보내지는데, answer=1010100000011100101011111과 id=이름 형태의 데이터가 전달된다. id에는 어떤 데이터를 입력해도 취약점이 보이지 않지만, answer에 '1'+'1'과 같은 데이터를 넣으면 query error라고 표시된다. 가장 기본적인 SQLi 구문을 넣으면 문제가 풀린다.
처음 이 문제를 봤을 땐 와 저걸 진짜 어떻게 풀지, 싶었는데 CTF를 여러번 뛰고 나니까 감이 잡히는 문제입니다. 페이지 소스를 보면 와 같이 쓸데없는 주석이 있습니다. 쿠키도 확인해보면 time이라는 값이 있네요. time의 값을 변경해봅시다. true로 변경하면 2070-01-01 09:00:01으로 바뀌고 false로 변경하면 2070-01-01 09:00:00으로 변경됩니다. admin.php에 접근하면 엉덩이를 차버린다 했으니 SQL 구문을 사용할 확률이 높겠네요. 직접적으로 SQL 결과값을 알 순 없고 true, false 값이나 숫자 값만 알 수 있으므로 Blind SQL Injection 공격을 시도해봅시다. 먼저 테이블 개수를 구하려면 (select count(*) from inform..
webhacking.kr 문제를 풀 때 인터넷 검색으로 힌트얻어서 푼 문제가 많았는데, 순수 실력으로 도장깨기를 시작하겠습니다. view-source를 통해서 소스를 보면 user_lv이라는 쿠키값이 설정이 안되어있을 때 설정됩니다.
보호되어 있는 글입니다.