CTF
-
-
[Clear] 사이버보안 챌린지 2023 SmartParkingCoupon WriteupCTF/사이버보안 챌린지 2023 2023. 9. 4. 18:05
주어진 URL에 접근해보면 아래와 같은 사이트가 나타난다. 페이지 기능들을 이동 할 때마다 p파라미터의 값이 바뀌는 것으로 보아, 호출되는 파일의 경로가 p파라미터에 의해 영향을 받는다고 판단했고, 해당 값을 비워보니 아래와 같은 에러 메시지를 확인 할 수 있었다. 입력되는 p파라미터의 값 + .php 가 호출된다는 것을 유추 할 수 있었고 php wrapper를 통해 base64인코딩 된 /var/www/html/index.php를 호출 할 수 있음을 확인함으로써, LFI가 발생함을 확인했다. 획득한 소스코드를 통해 유추한대로 p파라미터의값+.php 가 include를 통해 호출됨을 확인 할 수 있었다. LFI 외에 RFI 도 가능한지 여부를 판단하기 위해 개인 서버에 내용이 php파일을 작성 후 이를..
-
[Clear] 사이버보안 챌린지 2023 HMI Monitoring System WriteupCTF/사이버보안 챌린지 2023 2023. 9. 4. 17:33
WEB 카테고리 문제였다. 힌트에 php7.4버전 사용 및 FastCGI Process Manager를 사용하고있다는 점이 주어졌으므로 이를 참고하여 주어진 URL에 접속해보자. Chartjs 기반으로 보이는 Velzon 페이지가 나타났다. 여러 기능들을 테스트해보았지만, p 파라미터를 통해 ChartA,B,C 를 조회하는 것 외에 다른 기능들은 비활성화 되어있었다. 활성화 되어 있는 기능에 대해 여러가지 시도를 해보면서 p파라미터에서 LFI가 발생함을 알 수 있었다. 힌트를 활용해서 /etc/php/7.4/fpm/php.ini 파일 획득을 시도하였으나, 용량 문제인지 정상적으로 호출이 되지 않았다. 이를 해결하기 위해 php wrapper 중 php://filter/convert.base64-encod..
-
[Study] LINE CTF 2023 Adult Simple GoCurlCTF/LINE CTF 2023 2023. 3. 27. 23:13
Simple 문제(https://vardy.tistory.com/262)의 업그레이드 버전이다. 취약점이 존재했던 필터링 로직이 수정되어, X-Forwarded-For 혹은 X-Real-IP 헤더를 사용하여 c.ClientIP()의 값을 제어하는 기존 방법으로는 플래그를 획득 할 수 없다. if strings.Contains(reqUrl, "flag") || strings.Contains(reqUrl, "curl") || strings.Contains(reqUrl, "%") { c.JSON(http.StatusBadRequest, gin.H{"message": "Something wrong"}) return } 어쨌든 헤더 삽입 관련 내용이기 때문에 관련해서 수많은 삽질을 하다가 문제를 풀지 못했는데 풀..
-
[Clear] LINE CTF 2023 Baby Simple GoCurlCTF/LINE CTF 2023 2023. 3. 26. 09:00
주어진 URL에 접근해보자 URL, Header Key, Header Value를 입력받아서 요청을 날리고, 응답 값을 json형식으로 출력해준다. 응답이 단순히 json 데이터로 반환되기때문에 클라이언트 영역에서 리다이렉트시키거나 스크립트를 실행하는것은 불가능했다. 대략적인 기능을 파악했으니, 주어진 Go언어의 소스코드를 분석해보자. (디버깅을 위해 출력부분 관련하여 추가/수정된 부분이 있다.) package main import ( "errors" "io/ioutil" "log" "net/http" "os" "strings" "github.com/gin-gonic/gin" ) func redirectChecker(req *http.Request, via []*http.Request) error { l..
-
-
[Study] Cyber Apocalypse 2023 SpyBug WriteupCTF/Cyber Apocalypse 2023 2023. 3. 23. 23:57
주어진 페이지에 접근하면 로그인 페이지가 나타난다. 그 외 별다른 기능이 없는것같아서 주어진 소스코드를 분석해보았다. adminbot.js 라는 흥미로운 파일이 있어서 먼저 분석하여 봇의 행동을 파악 해보았다. //adminbot.js require("dotenv").config(); const puppeteer = require("puppeteer"); const browserOptions = { headless: true, executablePath: "/usr/bin/chromium-browser", args: [ "--no-sandbox", "--disable-background-networking", "--disable-default-apps", "--disable-extensions", "--..
-
[Clear] Cyber Apocalypse 2023 Didactic Octo Paddles WriteupCTF/Cyber Apocalypse 2023 2023. 3. 23. 14:42
주어진 페이지에 접근하니 로그인 창이 나타났다. 주어진 소스코드를 분석해보았다. UI상에 나타나지는 않지만 index.js 파일을 분석해보니 회원가입 기능이 있었다.(/register) //index.js module.exports = (db) => { const bcrypt = require("bcryptjs"); const router = require("express").Router(); const jwt = require("jsonwebtoken"); const jsrender = require("jsrender"); const AuthMiddleware = require("../middleware/AuthMiddleware"); const AdminMiddleware = require("../m..