일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- XSS
- blind-sqli
- web
- Bob
- pwnable
- 예전글 #CNN
- cce2023
- cryptohack.org
- blind_sqli
- SQLi
- 예전글 #PS
- PS
- pwn.college
- Crypto
- webhacking.kr
- regex
- HTB
- 예전글
- pwn
- 백준
- SECGAME
- Pwnable.kr
- JS
- cookie
- Today
- Total
목록2023/06/13 (7)
아모에요
보호되어 있는 글입니다.
문제 소스를 보면 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..