교내해킹대회 (13) 썸네일형 리스트형 서버나 문제 제작하면서 트러블 슈팅 서버 gcp ssh를 종료하면 호스팅도 끊기는 문제 -> screen 명령어 사용으로 ssh를 종료해도 동작하게 바꿈 유저가 좀 모이고 트래픽 빈도가 높아지면 다운되는 현상 -> 웹서버를 두지않고 플라스크에 의존해 플라스크가 버티지 못 한거라 생각됨? 속도가 너무 느림 -> 리전 문제 서버위치를 미국에서 서울로 옮김 xss문제 크롬80버전이상에서 기본적으로 적용되는 쿠키 samesite옵션으로 쿠키전송이 안되는 문제 -> 크롬 드라이버 79버전으로 다운그레이드로 해결 https://go-madhat.github.io/chrome-headless/ Injection, Blind SQLi문제 대회 오픈 전에 mysql connection time 문제로 wait_timeout이 짧아 mysql의 connec.. Binary 문제 01001101011000010111100100100000001110010111010001101000001011000010000000110010001100000011001000110000001011000010000001010100011011110110010001100001011110010010000001101001011100110010000001110100011010000110010100100000011001000110000101111001001000000110111101100110001000000100010001010011010101010100001101010100010001100010111000100000010010010010011101101101001000000110011101101111011.. Secret File 글과 이미지를 업로드 할 수 있는 게시판이 있다 간단한 php web shell을 만들어 업로드 해본다 파일 타입을 검사해서 필터링한다 image만 가능하니 Burpsuite로 프록시를 설정해 잡아 놓고 파일타입을 application/octet-stream에서 image/jpeg로 바꿔준다 성공적으로 웹 셸이 업로드 되었다 웹셸이 잘 동작한다 flag는 숨김파일로 저장되어있어 ls -a로 볼 수 있고 cat .flag.txt를 하면 구할 수 있다 What is your major 컴공은 안다 text = '68 83 85 123 121 48 117 95 99 52 110 95 114 51 52 100 95 52 50 67 105 105 95 99 48 100 51 125' text = text.split(' ') for i in text: print(chr(int(i)),end='') Injection 'user', '.', '()', '_' 필터링은 SQLMAP툴이나 문제 풀이에 상관없는 데이터 베이스 공격을 막아놓은 거고 별다른 필터링은 없다 admin으로 접속하면 됨 userpw = request.args.get('pw', ' ').lower() pw만 get방식으로 파라미터를 받고 소문자로 만든다 select id from user where id='guest' and pw=' ' 해당 쿼리로 admin를 추출 select id from user where id='guest' and pw='1' or id='admin' id는 guest이고 pw는 1 이거나 id가 admin인 row 추출 FLAG get 투명망토 페이지 소스에 주석으로 FLAG가 있다 http VS https 패킷 분석해서 admin이 로그인 페이지에서 로그인한 흔적을 찾고 TCP Follow로 들어가 pw를 찾는다 pw는 base64로 인코딩한 값을 줬느데 디코딩하면 FLAG를 얻을 수 있음 Escape-Room key.txt -> escape-room.exe ->나오는 페이지에서 진행(escaperoom.py) text = 'password is "p4ssw0rd"' compression = '' for i in text: compression += bin(ord(i))[2:].zfill(8) print(compression) zflag = True compressionText = '' count = 0 num = 0 temp = 0 while True: if zflag: temp = count try: count += compression[count:].index('1') num = count sub = num-temp except: sub = len(compression[count:]) compression.. 이전 1 2 다음