분류 전체보기

    Misc - misDIRection

    그냥 zip파일을 하나 준다 근데 이게 맥에서 안열려서 승준이한테 풀린 파일을 받았는데 이게 스노우볼로 굴러가버렸다.(사실 풀고보니까 unzip으론 풀리네 이게머다냐) 정석적인 방법으로 풀라면 일단 unzip으로 풀어보면 extracting: .secret/S/1 creating: .secret/V/ extracting: .secret/V/35 creating: .secret/F/ extracting: .secret/F/2 extracting: .secret/F/19 extracting: .secret/F/27 creating: .secret/o/ creating: .secret/H/ creating: .secret/A/ creating: .secret/r/ creating: .secret/m/ crea..

    WEB - Templated

    Flask로 만들어져있다고 한다. Jinja2는 Flask에 내장되어있는 템플릿 엔진이라고 하는데 문제이름도 템플릿이고 템플릿 엔진이라고 하니까 플라스크 템플릿 취약점이라고 구글링하니까 SSTI(Server Side Template Injection)라는 취약점이 있다. 이론적인건 나중에 보고 익스플로잇하는 방법들을 좀 찾아봤다. 가장 기본적으로 {{7*7}}을 넣어보니까 이렇게 49가 나온다 구글링을 해보니 리눅스 커맨드를 실행하려면 "{{ (config|attr("__class__")).__init__.__globals__['os'].popen('cat flag').read() }}" 이렇게 해야되는것 같으니 cat flag 자리에 ls를 넣었더니 flag.txt 가 바로 보인다. 똑같은 방식으로 c..

    WEB - Phonebook

    이런 창이 나온다 이문제는 지훈이랑 같이 풀었는데 지훈이가 "Reese" 이게 U sername이 아니냐고 해서 Reese를 Username에다 박고 Password를 막 입력하다가 *를 입력하니까 로그인이 됬다. 근데 여기서 flag를 어디서 얻어야되는지 모르겠어서 승준이한테 코딩해서 풀어야되냐고 물어봤는데 해서 풀어야된데서 {flag}*이런식으로 브루트포스 해서 풀어야되는것 같아서 파이썬으로 코딩했다. import requests s =requests.session() url = "http://167.99.88.212:31775/login" data = {"username":"Reese", "password":""} flag ='HTB{d' while True: for i in range(32, 12..

    WEB - Emdee five for life

    CU46KprqwPnVQ980ufJ5를 md5로 암호화해서 보내보면 Too slow란다. 그냥 requests모듈로 개빠르게 보내면 될꺼같아서 파이썬으로 짰다. import requests, hashlib from bs4 import BeautifulSoup url = "http://167.99.88.212:31375/" s = requests.session() a = s.get(url) soup = BeautifulSoup(a.content, "lxml") string = soup.h3.string md5 = hashlib.md5(string.encode()).hexdigest() data = {"hash":md5} b = s.post(url, data=data) print(b.text) 원래 세션을 ..

    Web - Server Side(HTML, Open redirect~Install files, File upload - Double extensions~HTTP - Cookies, File upload - Null byte,SQL injection - Authentication )

    HTML f12를 눌러 관리자도구를 키면 바로 flag가 보인다. 저걸 password에 박는게 아니라 그냥 flag에 인증해야된다. Open redirect 페이스북으로 리다이렉트 해주는데 다른곳으로 바꿔본다. 저 h파라미터 안에 들어가는게 hash값인거같은데 문자열이 32개인걸 보니 md5인것 같다. url에 맞는 md5해쉬값을 넣으면 풀린다 User-agent admin 브라우저를 사용하란다. 프록시 툴로 user-agent를 admin으로 바꾸면 풀린다 Weak password 걍 admin/admin 하니까 풀렸다. PHP - Command injection 드림핵에서 비슷한 문제를 본적이 있다. 이름부터 커맨드 인젝션이기 때문에 ip주소 다음에 ls를 쳐봤다. cat index.php를 하면 ..

    webhacking.kr - 61

    이것도 sql인것 같다. id를 내림차순으로 정렬한 뒤에 하나만 뽑아주는것 같다. 일단 아무값이나 넣어보다가 ?id=id를 넣으니까 test라는 값이 뽑힌다 이제 이 값을 admin으로 바꾸기만 하면 문제가 풀릴것 같다. select {} name을 통하여 name의 이름을 {}로 바꿀 수 있다. {}를 admin으로 바꾸기만 하면 되는데 어떤방법이 있나 구글링하다가 hex값이 되길래 hex값을 넣어봤는데 풀렸다.

    Webhacking.kr - 59

    딱봐도 sqli다. 테이블에 intert하는 부분과 select하는 부분 두 부분으로 나뉘어져 있다. lphone을 admin으로 바꾸면 풀릴것 같다. 일단 admin, 0x, char 등이 모두 필터링이 걸려있다. 이러면 mysql 내장함수로 어캐 해봐야될것같은데 revers를 사용하면 문자열을 뒤집을 수 있다. 그러면 1,revers('nimda')-- 이렇게 질의를 보내면 될것 같다. 이렇게 질의를 보내면 바로 Access Denied가 터져버린다. 글자수가 20을 초과해버렸기 때문이다. 놀랍게도 reverse의 인자값을 변수로 줄수 있어서 이걸 이용해서 해결할 수 있었다. id = nimda phone = 1,reverse(id))-- -

    Webhacking.kr - 42

    flag.docx를 다운받으려니 가 뜬다. 그럼 텍스트 파일을 다운받아봤다. 새창으로 열어서 받으니까 이런 url에서 받는데 아마 base64로 인코딩 된것 같다. 그럼 flag.docx를 인코딩해서 down={여기}에 박으면 해결 될것 같다.