SuSec CTF 2020 'Roll dice' write-up

CTF 도중에는 어떻게 푸는지 정말 감을 못잡아서 결국엔 끝날 때까지 못풀었는데, CTF가 끝나고 Defenit 팀에서 어떻게 푸는 문제인지 알려주어서 나중에야 풀 수 있었다. 해당 문제에서는 소스를 제공해주는데, Python 이기도 하고 무엇보다 eval() 을 통해서 사용자로부터 입력된 표현식을 실행시키는 방식이기 때문에 Python Jail임을 확신했다. I couldn't solve this challenge during the CTF, but I resolved later with the help of the Defenit team. Thanks to team Defenit. I was sure that it is a sort of 'Python Jail' because of eval() fun..

SuSec CTF write-up

Sorry for my bad English foreigners lol :0Webweb0 We can get the source which use nodejs express engine. There's some mechanism which compare 'first' and 'second' in post method. As send Array in 'first' and 'second', you can get the flag! Microservice We can access to very simple web service. You can Login, get Flag, and change the Theme of the service. After many tries in JWT Token Attack, I f..

wargame.kr QR CODE PUZZLE write-up

문제에 접속해보면 QR코드로 추정되는 사진이 퍼즐게임과 같은 조각으로 나뉜 것을 볼 수 있다. 예전에 주니버네이버에서 해봤을 법한 게임이다. 소스를 보면 QR코드를 어떻게 불러왔는지 알 수 있다. /**/ 에 jQuery의 attr() 함수를 통해 QR 코드를 불러옴을 확인할 수 있다. QR코드의 주소는 URL Encoding 형태로 인코딩되어 있는데 이것을 다시 디코드해보면 QR코드의 경로가 './img/qr.png' 인 것을 알 수 있다. http://wargame.kr:8080/qr_code_puzzle/img/qr.png QR코드 리더기로 불러오면 'http://wargame.kr:8080/qr_code_puzzle/Give_M3_th7_F1aG.php' 로 이동한다. 그리고 플래그를 얻을 수 있다.

b01lers CTF, Scrambled write-up

약간 게싱?이기도 하면서 스크립트 짜면 쉽게 풀 수 있었던 문제같다. 문제 사이트로 들어가면 다음과 같은 화면을 볼 수 있다. [*] url : http://web.ctf.b01lers.com:1002/ 이렇게 캡처 사진만 보면 별게 없어보이지만, html 소스를 보면 더 별게 없다. 이게 끝이다. 보통 이런 경우 robots.txt 에 숨겨진 디렉터리가 존재하거나, Cookie에 무언가 값을 넣어두거나, .git, index.php~ 등의 소스유출을 의도하는게 대부분이다. 이 문제에서는 쿠키에 이상한 값을 넣어놓았다. 쿠키를 보면 알 수 없는 값들이 존재한다. 뭔지 영문을 알 수가 없는 이 값 때문에 '게싱'으로 푸는 문제임을 직감하고 그냥 넘어가려고 했지만, 이런 ㅈ밥문제는 내가 뚝배기를 깨버려야 한..

CONFidence CTF 2020 Teaser write-up

Web Cat web XSS 풀자마자 왜 이런 벡터를 생각을 못했는지 자책을 하기도 했던 문제이긴 하지만, 풀이 자체는 깔끔하고 공격 연계 벡터도 내가 생각도 못한 부분에서 발생해서 나름 신기한 문제였다. function getNewCats(kind) { $.getJSON('http://catweb.zajebistyc.tf/cats?kind=' + kind, function(data) { if (data.status != 'ok') { return; } $('#cats_container').empty(); cats = data.content; cats.forEach(function(cat) { var newDiv = document.createElement('div'); newDiv.innerHTML =..

websec.fr level19 write-up

Captcha가 있길래 이 문제를 풀기 위해서 머신러닝으로 저기에 있는 글자를 알아와야하나 생각이 들어서 지금까지 굳이 풀려고 하지 않으려고 했지만, 오늘 이 문제 소스를 보니까 꽤 쉬운 것 같아서 write-up을 작성해보려고 한다. 참고로 아직 풀진 못했다. 로컬에서는 분명히 풀리는데 서버에서는 안풀리는 문제다. random.php의 소스이다. 여기서 microtime(true)로 seed를 설정하는데 여기서 취약점이 발생한다. srand() 함수를 통해 같은 값을 설정할 경우 rand() 의 값이 똑같아진다. 다음 코드를 예를 들어보면 이해하기 쉽다. #!/usr/bin/env php

websec.fr level13 write-up

고등학교 1학년 땐가 페이스북에서 Sakuya Izayoi님께서 "PHP에서 성능 개선을 위한 유용한 팁"이라는 제목으로 어떤 글을 하나 공유하신 적이 있었다. 여러가지 팁들이 있었지만, 가장 인상깊었던 팁 중 하나는 반복문의 조건에 함수가 들어가 있으면 그 함수는 반복문이 한 번 실행될 때마다 호출되기 때문에 성능 향상을 위해서라면 조건문에는 함수를 넣지 말라는 것이었다. 그게 사실 그냥 넘길 만한 사소한 것이어서 나에게는 적쟎은 충격이었기 때문에 아직까지도 반복문을 사용할 때면 머릿 속에 또렷이 그 문장이 새겨진다.( * 링크 : http://www.qdata.co.kr/bo/bbs/board.php?bo_table=pht&wr_id=77) 이 때 이후로 해당사항을 지키면서 코딩을 해왔는데 이걸 여기..

Lord of SQL Injection alien write-up

Exploit point #1 해당 문제에서는 두 가지의 쿼리의 문법적인 요소를 모두 만족해야 한다. 주석을 이용해서 이 문제의 SQL 문법적 조건을 완성시켰다. query : select id from prob_alien where no='#'#' \nunion select 0x61646D696E# query2 : select id from prob_alien where no=''#'#' \nunion select 0x61646D696E#' 주석 이후의 쿼리에서는 개행문자(\n)를 통해 escape 할 수 있다는 점을 이용해서 위와 같이 우회할 수 있다. Exploit point #2 이 부분을 보면 논리적으로 말이 되지 않는 것 같지만 timestamp나 random 같이 event에 따라 결과값을 ..

2019 Christmas CTF watermelon write-up

Aleph Infinite 팀에서 주최한 Christmas CTF에 낸 문제인 Watermelon 문제의 풀이를 작성해보려 한다. 문제 컨셉. 일단 어떤 문제를 만들까 계속 고민을 해왔었다. 1년간의 수험생활 동안 해킹 공부를 거의 포기하다시피 하기도 했고, 올해 CTF도 사이버작전경연대회 밖에 참가하지 않아서 최근 트렌드와 트릭, 유행인 취약점을 몰랐기 때문에 로직 버그? 와 비슷한 문제를 출제하기로 했다. 한 음악스트리밍 업체에서 터진 사재기 논란을 오마주?하기로 하였다. 자신이 업로드한 음악의 순위를 스크립트를 짜서 높이고 플래그를 획득하는 방식이다. 취약점. CTF를 할 때마다 웹해킹 문제를 풀려면 어쩔 수 없이 확인해야하는 것이 1. /robots.txt 2. /.git/ 3. /admin/ 등..

2019 사이버작전경연대회 학생부 예선에서 2등한 썰

오늘(2019.08.17.), 오전 9시부터 6시까지 국방부 주최로 `사이버작전경연대회`가 개최되었다. 나는 학교 후배 정훈이랑, 민우, 효민이랑 참가했다. 일단 결론부터 말하자면 학생부에서 2위를 하게 되어 본선에 진출하게 되었다. 내가 거의 다 파놓은 웹 문제를 정훈이가 풀어서 인증했고 포렌식 문제도 정훈이가 막타를 쳐서 2위까지 올라왔다ㅋㅋ 웹 문제 `The Camp`는 좀 아쉬웠던 것이, 개연성이 결여된 문제가 출제되었다는 점이다. 솔직히 CSP를 우회해서 XSS 공격하고 관리자의 세션을 빼오는 것까지는 풀었을 때는 문제질이 우수하다고 생각했었다. 그런데 이 공격을 사용해서는 풀 수 없고 게싱적 요소를 더해서 플래그를 얻어야한다는 점에서 문제 출제 미스가 아니었나 싶다. 아무리 해킹대회라고 하더라..