Develop

Develop

Do you need a config? Now, Pkl

  • 1 min read

최근에 Apple이 내부에서 사용하던 Configuration language를 오픈소스로 공개헀습니다. 바로 Pkl(피클)인데요, 과연 Pkl은 JSON과 YAML과 함께 Config계의 대표 주자가 될 수 있을까요?

Read More

Crystal-Lang is ❤️

  • 2 min read

저는 최근에 Crystal-lang을 즐기고 있습니다. 간단한 토이 프로젝트부터 Noir란 사이즈가 점점 커지고 있는 프로젝트까지 Crystal을 통해 구현하고 있습니다. 오늘은 제가 Crystal을 좋아하게된 이유에 대해 이야기하려고 합니다.

Read More

DOM Handling with MutationObserver

  • 3 min read

최근 ZAP은 SPA 기반의 앱을 쉽게 식별하기 위해 Client Side Integration 이란 기능을 추가했습니다. 이 이 때 DOM의 변화를 식별하기 위한 장치로 MutationObserver가 사용되었는데요. 오늘은 MutationObserver가 뭔지 그리고 보안 테스팅 시 어떻게 사용할 수 있을지 이야기해봅니다.

Read More

Lazy-loading iframe in Firefox

  • ~1 min read

최근에 Firefox쪽에서 하나 업데이트를 예고 했습니다. 곧 img 태그에만 존재하던 lazy-loading이 iframe에도 적용되는데요. 성능적인 장점은 분명히 있겠지만, img와 달리 XSS의 리스크가 높은 iframe의 로드 시점을 통제할 수 있는 형태라 재미있는 이슈가 나올지 기대되기도, 반대로 또 걱정되기도 합니다.

Read More

Crystal로 알아보는 Fiber concurrency

  • 2 min read

동시성 프로그래밍은 재미있지만 구조나 사이즈에 따라 어려움을 동반합니다. 개인적으로도 도구 작성 시 자주 사용하기 때문에 제가 진행하는 프로젝트에서 자주 볼 수 있고, 블로그에도 Goroutine과 Sync, Ruby Concurrency 등 매년 동시성 관련해서 글을 작성한 것 같습니다.

Read More

WebAuthn과 Passkey

  • 4 min read

여러분들은 패스워드 매니저를 사용하시나요? 저는 개인적으로 Apple의 암호 기능을 주로 사용합니다. 또한 icloud+도 사용하고 있어 이메일 가리기 + 암호 조합으로 가급적 서비스별로 계정과 패스워드가 겹치지 않는 상태로 유지하고 있습니다. 구글의 경우 Google password manager를 통해 비슷하게 사용하시는 분들도 있을거라고 생각합니다. Apple이나 Google의 이러한 기능들과 FIDO 관련 인증 방식들은 Passwordless의 대중화를 앞당겼고 이제는 Password를 입력하는 것이 점점 어색해지는 시기가 온 것 같습니다.

Read More

Zest + YAML = ❤️

  • 1 min read

최근에 Zest 쪽의 Commit (zaproxy/zest/6d67925) 하나를 주시하고 있었습니다. 바로 Zest에서 YAML 포맷 지원에 대한 내용이였는데요. 드디어 공식 릴리즈가 이루어졌고 이제 Zest에서 YAML 포맷을 사용할 수 있게 되었습니다.

Read More

XSpear Reborn: Big Changes Coming

  • 2 min read

제가 Dalfox 를 개발하기 전에 Ruby로 작성했었던 XSpear란 도구가 있었습니다. 동일하게 XSS를 테스팅하기 위한 도구였고, 현재 성능은 당연히 Dalfox쪽이 압도적으로 좋은 상태입니다. 그리고 작년부터 XSpear에 대한 Reborn 계획을 생각해 두었었는데, 최근 만들던 도구도 어느 정도 윤곽이 잡혀서 이제 본격적으로 XSpear에 대해 대규모 개편을 진행하려고 합니다.

Read More

Embed resources in crystal

  • 2 min read

Crystal에서 리소스 파일을 바이너리에 Embed 하는 방법에 대해 기록해둡니다. 깃헙 이슈등을 찾아보면 stdlib로 만들어줄 것 같진 않았고 찾아보니 Rucksack이란 좋은 shard를 발견해서 간단하게 정리해둘게요. 참고로 Rucksack은 Linux와 macOS에서만 동작하고 Windows는 지원하지 않는다고 하니 이 점 참고하면 좋을 것 같습니다.

Read More

Default vs Release build in Crystal

  • 1 min read

Crystal은 컴파일 언어로 바이너리로 빌드하여 사용할 수 있습니다. 그리고 공식 가이드에선 release build 시 —release flag 사용을 권고하고 있는데요. 오늘은 이 flag가 어떤 역할을 하는지, 왜 권고되고 있는지 정리해봅니다.

Read More

Homebrew로 패키지 제공하기 🍺

  • 2 min read

제가 만든 도구는 대부분 Homebrew, Binary, RubyGem, Snapcraft 등을 통해 배포합니다. 특히 macOS의 경우 Homebrew를 통한 설치 비중이 엄청 높기 떄문에 Go 기반 앱들은 가급적이면 Homebrew를 지원하려고 하고 있습니다. 그리고 이러한 대부분의 작업은 Goreleaser란 도구를 통해서 진행하기 때문에 매우 편리하게 진행했었죠.

Read More

Encoding Only Your Choices, EOYC

  • 2 min read

요즘 장난감 삼아 Crystal과 Elixir로 여러가지 코드를 작성해보고 있습니다. 특히 Crystal은 Ruby와 제가 예전에 한번 소개하기도 헀고 Ruby와 거의 유사한 문법에 속도까지 갖추고 있어 개인적으로 관심이 많았던 언어입니다. 최근에 여러가지 이유로 Crystal은 주력 언어로 만들어가고 있습니다. 오늘은 Crystal로 작성한 간단한 도구 하나 공유하려고 글을 작성해봅니다.

Read More

CORS Bypass via dot

  • 1 min read

Origin 헤더와 ACAO(Access-Control-Allow-Origin) 헤더는 Cross-Origin 관계에서 데이터를 전달하고 수신하기 위한 헤더로 SOP(Same-Origin Policy)를 공식적으로 우회하기 위한 헤더입니다. 일반적으로 CORS라고 통용되어 부르며, 이는 JSON HijackingCSRF 취약점에 큰 접점을 가지고 있습니다.

Read More

ZAP Custom En/Decoder 만들기

  • 2 min read

ZAP의 확장성은 Scripting Engine의 파워에서 나옵니다. URL, HTML, Base64 등 테스팅 단계에선 인/디코딩을 하는 경우가 굉장히 많은데요. 이 때 사용하는 Encode/Decode/Hash 기능 또한 Scripting으로 확장할 수 있습니다.

Read More

Broken link를 찾자! DeadFinder

  • 1 min read

최근에 Broken Link(Dead Link)를 쉽게 찾기 위한 도구를 하나 만들었습니다. 제 블로그의 Broken Link를 찾기 위한 목적이였지만, 가볍게라도 한번 공유하는게 좋을 것 같아서 블로그 글로 작성해봅니다.

Read More

Rake(Ruby Make)

  • 2 min read

Rake는 Ruby에서 사용되는 build utility로 Make유사합니다. rake란 이름 또한 ruby + make 에서 만들어진 단어로 일반적인 Ruby application과 Rails 등 여러가지 환경에서 개발 도구로써 사용됩니다.

Read More

Ruby Concurrency

  • 2 min read

매번 어플리케이션을 만들 때면 동시성에 대한 고민을 하지 않을 수가 없습니다. 기능적인 구현에 직접 필요한 경우도 있고 퍼포먼스를 결정 지을 수 있는 요소이기 때문에 중요하다고 생각합니다.

Read More

Jekyll Collection 다루기

  • 1 min read

최근에 Jekyll로 다시 이사 후 몇가지 기능들을 개발하고 있습니다. 그 중 하나를 해결하기 위해선 특정 type의 페이지들을 모아서 json으로 만들어주는 과정이 필요한데, Jekyll의 Collection 기능을 이용해서 쉽게 해결했습니다.

Read More

Hugo to Jekyll

  • 1 min read

정말 설마설마 했습니다. 아니 이런 일은 없을거라고 장담했습니다. 작년에 Jekyll에서 Hugo로 전환한지 딱 1년만에 마음이 바뀌었습니다. 다시 Jekyll로 돌아갑니다.

Read More

Hex? Imhex and Hexyl

  • 1 min read

여러분들은 어떤 Hex editor/viewer를 사용하시나요? 저는 Linux를 메인으로 사용할 떈 Ghex와 hexdump, macOS에선 hexyl와 vim(+plug)을 주로 사용합니다. 오늘은 크로스 플랫폼을 지원하는 엄청난 Hex Editor인 ImHex에 대해 소개해드리려고 합니다. 저도 이제는 ImHex와 hexyl 조합으로 사용합니다 :D

Read More

Docker와 Dumb-Init

  • 2 min read

오늘은 도커에서 안정적인 구동을 위해 사용하는 dumb-init과 pid1 그리고 init 시스템에 대한 이야기를 하려고 합니다.

Read More

Go에서 Stdin에 대한 테스트 코드 작성하기

  • 1 min read

테스트 코드 작성 중 우리가 예측 가능한 함수 인자 값은 쉽게 체크가 가능하지만, 시스템으로 부터 넘어오는 데이터는 막상 작성하려고 하면 어떻게 해야할지 고민이 되기 시작합니다.

Read More

Golang Logrus에서 Channel hook 만들기

  • 1 min read

Logrus는 golang의 아주 좋은 logger 패키지입니다. logrus는 hook을 이용해서 지정된 한번에 여러곳에 로그를 남길 수 있습니다. built-in hook으로는 현재 syslogio.Writer가 있고 저는 channel로 hook을 쓸 일이 있어 간단하게 작성하여 공유해봅니다 :D

Read More

Go에서 HTTP gzip response 처리하기

  • 1 min read

최근 dalfox에 독특한 이슈가 제보됬는데(오프라인으로도 한번 제보받은 사항이라 이미 삽질을 좀 헀던 상태였네요) 오늘 이를 해결하고 어떻게 해결했는지 간략하게 공유할까 합니다. 특별한 내용은 아니지만, golang에서 http 기반 개발을 진행할 때 알고 있으면 실수를 예방할 수 있는 부분이죠.

Read More

Hugo aliases에서 noindex로 인한 SEO 문제 해결하기

  • 1 min read

Hugo에서 aliases를 사용하면 해당 주소는 meta tag를 이용한 redirect를 페이지가 생성됩니다. 이러한 형태는 일반적으로 url을 이동하기엔 적합하지만, 30x의 status code가 아니고 200이기 때문에 구글 등 검색 봇이 해당 페이지를 수집하게 됩니다.

Read More

pkg.go.dev에 go 패키지 즉시 업데이트하기

  • ~1 min read

golang으로 개발된 앱은 pkg.go.dev에 저장되며 해당 사이트를 통해 패키지 정보를 볼 수 있고 실제 go get 으로 패키지를 가져올 때 이곳의 latest 버전을 가져오게 됩니다. 그래서 이 사실을 잘 몰랐던 과거의 저는 이런 실수도 했었던 기억이 나네요.

Read More

Github repo 내 Languages 변경하기 (.gitattributes)

  • 1 min read

Github repository 페이지의 우측에는 해당 repo의 언어 통계인 Languages가 있습니다. 이는 페이지에 접근한 사용자로 하여금 이 프로젝트가 어떤 언어를 주력으로 구성되었는지 확인할 수 있는 지표가 되고, 일부 도구들은 이 데이터를 기반으로 오픈소스 프로젝트들을 분류하기도 합니다.

Read More

Go에서 아주 큰 JSON 파일을 핸들링하기

  • 2 min read

최근에 시덥지 않은 문제로 구글링하다가 단순하게 해결한 일이 있어서 짧게 글로 공유 해볼까 합니다. 복잡한 문제로 생각해서 오히려 가까이에 있는 답을 놓치고 말았었네요.

Read More

Goreleaser에서 M1, Windows ARM64 지원하기

  • ~1 min read

goreleaser의 각각 v0.157.0, v0.175.0 버전에서 M1 macbook, Windows ARM 64 지원이 추가되었습니다. 저도 제가 개발하는 도구에선 M1 지원이 약간 늦은 느낌이 있긴한데요. 관련해서 주의해야할 점들 정리해 둡니다.

Read More

Hugo에서 Sitemap-index 사용하기(split sitemap)

  • 3 min read

sitemap.xml

sitemap.xml은 Sitemap protocol을 위한 XML schema로 웹 서비스가 포함하고 있는 링크들을 사용자에게 제공하기 위한 목적으로 구성되는 파일입니다. 아래와 같은 구조를 가지며, 사용자나 검색 봇 등은 이 파일을 참조하여 웹 페이지를 수집합니다.

Read More

Github action 성공 시 다른 action 실행하기

  • 1 min read

Github action은 github에서 제공하는 CI/CD를 위한 도구입니다. yaml 포맷의 config 를 이용해서 코드 빌드, 테스트부터 deploy 까지 구현하기에 따라 정말 많은 기능을 자동으로 처리할 수 있는 도구이고 github를 사용한다면 jenkins나 다른 devops 도구를 버리고 이동할 만큼 충분히 좋은 기능성을 가지고 있습니다.

Read More

git subtree를 이용해 github pages에 배포하기

  • 1 min read

hugo 등 jekyll이 아닌 static site generator를 이용하거나 별도로 개발해서 github pages에 페이지를 배포하는 경우 gh-pages 브랜치나 별도의 디렉토리에 배포하고 배포 path를 연결하여 github pages로 호스팅할 수 있습니다.

Read More

Hugo Shortcodes

  • 1 min read

Hugo에는 Shortcode라는 snippet이 있습니다. 제가 hugo로 넘어오고 굉장히 맘에 들었던 부분인데요. 오늘은 shortcode가 뭔지, 어떻게 사용하는지 그리고 어떻게 쓰면 더 좋을지 이야기해볼게요.

Read More

Hugo Archetypes을 이용한 글 Template 사용하기

  • 1 min read

Hugo에서는 content management를 위해 archetypes 라는 template file을 제공하고 있습니다. 이는 hugo new 로 새로운 글을 만들 때 자동으로 글에 필요한 정보를 작성해주며, 종류에 따라서 커스텀하게 작성할 수 있도록 제공해주는 기능입니다.

Read More

Goroutine과 Sync

  • 3 min read

Go 하면 어떤 특징이 떠오르시나요? 구글의 언어, 빠르다 등 전반적인 개념에서 goroutine, 채널 등 디테일한 부분까지 많은 것들이 있을텐데요, 저는 제가 처음 고를 접했을 때 가장 재미있게 봤던 것이 goroutine과 채널이였습니다.

Read More

Html to Markdown in Cli

  • 1 min read

어제 Hugo로 이사로 이사를 마무리하면서 못했던 작업을 하나 진행한게 있습니다. 바로 기존 jekyll 부터 유지해오던 blogger로 부터 넘어온 잔해, html 포스트들인데요. 물론 페이지 랜딩에는 전혀 지장이 없지만, html 파일 자체가 유지보수가 어렵다보니 글을 수정하기 까다롭다는 단점이 있었습니다.

Read More

Jekyll에서 Hugo로 이사가기 (Migration log)

  • 7 min read

jekyll… 제가 예전에는 rubyist(ruby 사용자) 였습니다. 그러다가 2018~19년 쯤에 gopher(golang 사용자)가 되었고 이후부턴 만들고 있는 대다수의 도구는 golang 기반으로 만듭니다.

Read More

Golang의 nil과 interface nil의 재미있는 특징

  • 1 min read

Null은 일반적으로 존재하지 않는 값 또는 메모리 주소를 의미하며 언어에 따라 null nil nan none undefined 등 여러가지 형태로 표현됩니다. 다만 null이란 개념이 언어마다 특성과 철학, 표현하는 방식에 따라서 달라지기도 하는데요. 오늘은 golang에서의 null인 nil의 특성 하나를 살펴보려고 합니다.

Read More

25 Keywords in Go

  • 1 min read

Go supports only 25 keywords. It’s very simple, which has the advantage of a low learning curve. I’ve never posting it while using Go. Let me summarize the meaning of each keyword today.

Read More

go-jwt와 golang-jwt/jwt

  • 1 min read

최근에 golang으로 개발한 도구 중 jwt 라이브러리를 사용한 대다수의 프로젝트에서 아래와 같이 Security dependency alert이 나타났습니다.

Read More

Ruby와 Google Indexing API를 이용하여 자동으로 신규URL 등록하기

  • 4 min read

제가 블로그 글을 작성하고 commit - push 시 많은 작업들이 일어납니다. 대표적인 것들을 이야기 드리면, Jekyll build 및 deploy 과정이 진행되고 이미지 중 compress가 필요한 이미지는 compress 처리하여 용량을 줄이고, notify 등 여러가지 과정들이 github action에 녹아있습니다.

Read More

Go에서 자동으로 테스트 코드 생성하기(with gotests)

  • 3 min read

저는 테스트 코드를 많이 작성하진 않습니다. 아무래도 본업이 보안 엔지니어링이다 보니 현업 개발자처럼 꼼꼼하게 테스트 코드를 작성하고 조금 더 나아가 TDD(Test-Driven Development)를 신경쓰면서 개발할 수 있는 여유가 있는 것도 아니구요.

Read More

rvm is not a function 에러 해결하기

  • ~1 min read

Problem

저는 보통 글을 작성할 떄 맥북에서 진행합니다. 그래서 홈 서버에서는 직접 글을 작성할 일이 별로 없었는데, 디자인 좀 수정하기 위해서 서버에서 직접 작업하다 보니 jekyll serve 시 ruby 버전 관련 에러가 있었습니다. 요약하면 github pages gem은 2.x 버전만 지원하는데, 시스템 버전이 3.x 버전이라서 발생한 문제였고, 이를 rvm로 처리하고자 rvm use를 사용했더니 아래와 같은 에러가 발생했엇습니다.

Read More

Secure JWT and Slinding Sessions

  • 3 min read

Sessions 이란?

Sessions은 컴퓨팅에서 비슷하지만 여러 의미로 사용되는 용어입니다. 일반적으로 상태를 의미한다고 보면 될 것 같고, 웹에서는 HTTP가 비 연결형 프로토콜이기 때문에 서버가 기존에 접속했던 클라이언트인지 확인할 수 있는 수단으로 사용됩니다. (파일 쿠키랑 비슷하죠. 다만 처리에선 약간 다르긴합니다.)

Read More

[Phoenix #4] Fixed bug in session entropy page

  • ~1 min read

Problem

Session entropy 계산 시 특수문자가 반영되지 않는 이슈가 있었습니다. 그냥 자동으로 계산하기 귀찮아서 Session type 드롭박스에 Ascii로 선택 시 반영되도록 추가했었는데, 크게 효용성이 없는 것 같네요..

Read More

[Phoenix #3] Update session entropy page

  • ~1 min read

Change note

  • 소숫점 3자리 까지 잘려서 Entropy 표현하도록 수정
  • 일부 문구 수정 및 table 등 간격 수정
  • Case , Length 등을 쉽게 수정할 수 있도록 이벤트 핸들러 변경(단일 Element에만 적용되도록)

Read More

Bump a go package version

  • 1 min read

My Problem

간혹 go get 으로 제가 만든 도구를 설치 시 구버전(현재는 2버전대인데, 1버전대가..)이 설치되는 이슈가 있었습니다. 또한 pkg.go.dev에도 구버전이 마지막 릴리즈로 있고 변화가 없던 상태였죠.

Read More

Go flag에서 custom usage 만들기

  • 2 min read

golang에서 cli 도구를 만들 때 가장 먼저 접하는 도구는 flag입니다. 저 또한 flag로 시작하여 cobra, unfave 등 여러가지 써보다가 결국은 잘 사용하던 cobra를 버리고 flag로 다시 돌아왔습니다. go의 내장형 option parser로 심플하지만, 편의성을 위한 부분들은 많이 적어서 때때로, 직접 오버라이드와 같이 라이브러리의 원본 함수를 수정하여 사용해야하는 경우가 있습니다.

Read More

Rails generate 시 멈추는 경우 해결 방법

  • ~1 min read

제가 2019년부터 go를 메인언어로 확정하면서 ruby로 개발할 일이 매우 줄어들었습니다. 그래도 가끔씩 빠르게 작업이 필요한 경우 ruby를 의도하지 않게 사용하는데, 간혹 rails g, rails generate 시 멈추는 상황이 있습니다. 그럼 원인과 해결 방법에 대해 글 작성해봅니다 :D

Read More

MacOS Atom에서 이모지 사용 불가 버그 해결하기

  • ~1 min read

Atom을 사용하던 중 은근히 불편한 부분이 하나 있었습니다. 바로 이모지를 사용할 수 없는 이슈인데요. 고쳐서 써야지 하다가 이제서야 솔루션을 찾아보고 적용해서 사용하니 패치 전까진 임시방편으로 쓸만한 것 같아 글로 간단하게 공유드립니다.

Read More

Git pull/merge 충돌 시 기본 에디터 변경, 에디터 띄우지 않기

  • ~1 min read

git은 때때로 git pull 등 remote의 소스를 가져오는 중 충돌이 있는 경우 에디터가 열리며 정보를 변경할 수 있도록 됩니다. 저의 경우 nvim을 기본 에디터로 사용하는데, 코드 머지 단계에서 열리는 기본 에디터가 nano라 상당히 불편했습니다. 그리고 CI에서 이러한 팝업은 자동화된 push 까지 이어지는데 불편함이 발생합니다. 오늘은 기본 에디터를 변경하는 방법과 Auto-Edit을 무시하는 방법을 간단하게 정리해볼까 합니다.

Read More

[Phoenix #2] Added change note

  • ~1 min read

Cullinan과 동일하게 Phoenix에도 change note를 추가했습니다. 이제부턴 phoenix 페이지에서 변경 이력에 대한 정보를 확인하실 수 있습니다. 구현 방식 또한 동일하니 아래 링크를 참고해주세요.

Read More

[Phoenix #1] Phoenix에 gist 기반 snippets가 추가

  • 1 min read

이전부터 디자인/기능 등 블로그 변경사항에 대한 글도 작성하려고 했었는데, 올해되서야 재대로 시작되네요. 사실 뭐 중요한 정보거리는 아니고, 그냥 개인적으로 변경사항에 대한 기록이 있으면 좋을 것 같아서 태그 하나 추가하고 작성해봅니다. 아마 간단한 내용들만 들어갈 것 같아요.

Read More

Github 2FA 인증 이후 Authentication Error 해결하기

  • ~1 min read

Gitub는 편의성 때문에 2FA(Two-Factor) 인증을 사용하지 않았었는데, Marketplace 업데이트를 위해 약간의 불편함을 감수하고 2FA를 설정했습니다. (어차피 다른 서비스에서 이미 많이 쓰고있던 상태라.. 뭐 사실 크게 불편할게 없을 줄 알았죠)

Read More

Jekyll Build Speed Up!

  • 3 min read

종종 제 Github page는 빌드가 실패합니다. 물론 대략적인 이유는 알고 있었습니다. Github page는 약 최대 13분 전후 정도의 build time을 가질 수 있는데, 이를 넘어가게 되면 pending 되거나 실패합니다. 제 Jekyll의 빌드 시간이 15분 정도 걸리던 상태로 당연히 실패하는 경우가 발생했었죠.

Read More

Jekyll feed.xml 최소화하기

  • 2 min read

RSS는 매우 오래된 기술이지만, 아직까지도 많은 웹 서비스에서 지원하고 사용되는 기술입니다. 일반 사용자가 리더를 통해 쉽게 글 목록을 받아서 읽을 수 있고, SEO 관점에서도 상당히 중요한 부분입니다.

Read More

workflow_dispatch를 이용한 github action 수동 트리거

  • 1 min read

이번 주말에 집 서버에 있던 자동화 로직 중 일부를 github action으로 이동하는 작업을 진행했습니다. 어차피 git pro를 사용하고 있어서, 월 3000분의 private repo에서 사용할 수 있는 github action의 시간이 있기도하고, 아무래도 클라우드 환경이다보니, 피씨꺼짐 등으로 인해 cron이 동작하지 않을 가능성을 줄이기 위해서 이동을 결심했죠.

Read More

Jekyll에 Utterances, Giscus 댓글 적용하기

  • 2 min read

최근에 블로그를 blogger에서 github page로 옮기면서 댓글을 작성할 수 있는 환경이 사라졌습니다. Jekyll에서 많이들 사용하시는 Disqus의 경우 개인적으로 광고 이슈때문에 좋아하지 않기 때문에 댓글 서비스를 다시 찾아봤고, github issue 기반의 댓글 서비스인 Utterances를 알게 되었습니다.

Read More

How to add custom header in ZAP and zap-cli

  • 3 min read

The zap-cli is a tool that helps make ZAP easy to use on the command line. From simple scanning to CI/CD Pipeline, it’s a tool that’s used everywhere. Unlike other scanners, it does not support custom headers.

Read More

Write Metasploit Module in Golang

  • 2 min read

Metaploit에서 2018년 12월부터 golang module 지원이 시작되었습니다. 저도 잘 모르고 있다가 최근에서야 알게 되었네요.

Read More

Check logic vulnerability point using GET/HEAD in Ruby on Rails

  • 3 min read

최근에 Github OAuth flow bypass 취약점이 공개되었습니다. 이 취약점은 Rails 앱의 특성을 이용한 취약점이고, Github만의 문제가 아니고 패치로 모든 Rails 앱을 보호할 수도 없습니다. Today, I going to review one vulnerability that needs to be checked in the Rails App environment through the Github OAuth flow bypass vulnerability. (B recently shared something interesting to me.)

Read More

Rails에서 HTTP Basic Auth 적용하기

  • ~1 min read

HTTP Basic Auth는 HTTP에서 기본적으로 사용되는 인증 방식입니다. ID/PW를 Base64로 인코딩해서 Auth 헤더에 넣어 서버가 신뢰된 사용자인지 검증하는 방식으로 동작합니다.

Read More

HTTP Request(ZAP, Burp) Parsing on Ruby code

  • 1 min read

XSpear 관련해서 이런 건의사항이 하나 있었습니다. Burp, ZAP 등에서 사용하는 패킷 데이터를 파일로 저장한 후 옵션을 주어 읽으면 자동으로 URL, Header 등을 파싱해서 사용하는 형태를 말씀하신 것 같습니다.(마치 sqlmap의 그것 처럼)

Read More

Ruby on Rails Double-Tap 취약점(CVE-2019-5418, CVE-2019-5420)

  • 4 min read

간만에 취약점 리뷰해봅니다. 올 봄에 정리한번하고 최근에 추가로 정리했던거라 머리속에서 날아가기 전에 블로그 글로 남겨보아요. 우선 올 해 3월 정도에 레일즈 관련 취약점이 3개정도 올라왔었습니다. CVE-2019-5418 ~ 5420 이슈인데, 결과적으론 Rails에서 시스템 파일을 읽고, 명령 실행까지 가능한 3가지였습니다.

Read More

How to resolve duplicate mail transmission in Rails ActionMailer(중복 메일 전송 해결 방법)

  • ~1 min read

Rails에서 ActionMailer를 이용하면 쉽게 메일 송/수신 로직을 처리할 수 있습니다. 그래서 ActionMailer로 여러가지 구성해서 사용하고 있는데, 특정 어플리케이션에서 메일이 중복으로 발송되는 이슈가 있었는데요, 찾아보니 정확한 이유는 모르겠지만 자체적인 버그로 보입니다. (중복 콜이 일어나는 것 같은데…)

Read More

Rails crono를 이용하여 스케줄링하기(Scheduling with crono on Rails)

  • 2 min read

보통 유닉스 기반 PC에선 스케줄링을 위해 crontab 또는 at를 사용하고, 윈도우에선 서비스에 등록하는식으로 사용합니다. 이를 위해선 시스템에서 crontab 같은 도구 사용이 가능해야하며, PaaS 이상의 추상화가 이루어진 플랫폼에선 사용하기 어려운 경우가 대다수입니다.

Read More

[ Rails on Heroku ] 간단한 루비 레일즈 앱 구성 및 Heroku에 배포하기

  • 2 min read

[ Rails on Heroku ] 자주 사용하는 heroku 명령어 정리 (https://www.hahwul.com/2019/04/what-is-heroku.html) [ Rails on Heroku ] 간단한 루비 레일즈 앱 구성 및 Heroku에 배포하기 (https://www.hahwul.com/2019/04/ruby-on-rails-distribute-heroku.html) [ Rails on Heroku ] Heroku란? 빠르게 환경 구성하기 (https://www.hahwul.com/2019/04/favorite-command-heroku.html)

Read More

Get cookie value in Javascript function

  • ~1 min read

Javascript 에서 쿠키 값 가져오는 함수입니다. 자주쓰는데, 따로 정리 안해두니 삽질하는 것 같네요.. 메모 차 글 작성합니다. 코드스니핏!

Read More

Swift code’s Access Control(스위프트의 접근제어)

  • 1 min read

iOS 개발하다가 자꾸 까먹어서 검색하길래 메모해둡니다. Swift에선 코드에 대한 접근 제어를 open, public, internal, file-private, private로 지정하고 있습니다. 다른 언어들에서 사용하는 것과 거의 유사하지만, 몇개 다른 부분들이 있기도 합니다.

Read More

How to Re-Size Image in Blogger

  • ~1 min read

이거 이전글(video resize) 작성하면서 블로그 내 이미지도 최대 크기로 조정했는데, 메모할겸 남겨둡니다. google blogger에서 첨부/삽입한 이미지는 별로의 class,id를 주지 않기 때문에 .post-body(본문)에 직접 css를 지정해주어야합니다. 어차피 .post-body에서 img 태그가 쓰이는건, 첨부한 이미지가 전부인지라, 최대 크기 및 테두리만 지정하였습니다.

Read More

How to Re-Size Video in Blogger Posts

  • ~1 min read

Problem

구글 블로거에선 글 작성중에 youtube 영상을 삽입하는 기능이 있습니다. 이 기능을 사용해서 영상을 삽입하게 되면 아래와 같이 굉장히 작은 화면으로 나타나집니다(이게 기본 크기..) 그래서 보통 youtube 페이지에서 공유(iframe 태그) 하여 코드 삽입하고 직접 크기 조정을 했었는데,약간의 트릭으로 손이 좀 덜가게 리사이즈할 수 있습니다.

Read More

editor.js - Simple Markdown Javascript Library

  • ~1 min read

하루패드(haroopad) 알기전에 google blogger에 markdown 어떻게 적용할까 고민이 많았었는데요, 그러면서 찾아본것들 중 하나 간략하게 소개해드릴까 합니다. editor.js란 자바스크립트 라이브러리로 별다른 코드 없이 웹상에서 마크다운 에디터를 구현할 수 있습니다.

Read More

HarooPad - markdown 에디터(to html view, to plain html)

  • 1 min read

markdown이 편한지라, 메모나 블로깅 초안 작성도 기본적으로 markdown으로 작성합니다. 다만 이 과정이 전문화된 에디터는 아니고 가벼운 코딩용으로 쓰던 geany에서 그냥 작성만 해서 사용했습니다.

Read More

Ruby gem 만들기(Make ruby gem)

  • 1 min read

요즘 좀 정신없이 지내다보니 벌써 10월이네요.. 써놓은 글도 마침 없는 상태인지라 이번에도 간략한 글 작성할까 합니다. (아 10월의 첫글이 메모글이라니…) 많은 ruby application 들이 단순히 코드를 clone 해서 쓰는 형태보단 gem으로 패키징하여 배포하고 사용하는 형태를 가집니다.

Read More

Scala의 underscore(_)란?

  • 1 min read

요즘 자꾸 스칼라랑 부딫히게 되네요. 써본적도 없는 언어지만 다른 언어랑 비슷하거니(Js+Java느낌..) 하고 봤는데, 어마무시하게 가독성을 떨어뜨리는 무언가를 발견하였습니다.

Read More

Consul에 대해 알아보자! (Service Mesh)

  • 3 min read

최근 재미있는 프로젝트를 하고있는데, Health cheak, Service discovery 용도로 Consul을 써보게 되었고 글로 약간 정리해둡니다. hashicorp에서 만든 Consul, 거기서 지정한 DevOps 관련 내용 중 Monitor에 해당하는 부분입니다.

Read More

우분투 18.04 에서 카카오톡 설치하기(Install kakaotalk on ubuntu 18.04)

  • 1 min read

📕특이사항 WineTrick에서 사용하는 MPSetup.exe가 download.microsoft.com에서 삭제된 것 같습니다. 우선 대안으론 직접 받아서 설치하면 되긴하는데, 아무래도 외부에서 받는 파일이니 바이러스 토탈 결과나 원본 있다면 원본이랑 비교 후 설치하시는게 좋을듯 싶습니다..아래 댓글 2개 참고해주세요.

Read More

Crystal - Ruby와 비슷하며 빠른 프로그래밍 언어

  • 2 min read

올 초쯤에 Crystal이란 언어에 대해 잠깐 이야기들은적이 있습니다. Ruby 문법과 유사하다는 것만 듣고 드디어 조금 더 살펴봤네요. 아직 정식 릴리즈도 아닌 상태이니 어떤 언어인지 정도만 정리해둘까 합니다.

Read More

Git commit으로 Issue 종료하기(Closing issue with commit)

  • ~1 min read

Git은 코드 관리 뿐만 아니라 Issue 관리에 있어도 굉장히 편리한 도구입니다. 코드 반영을 위해 Commit 하는 과정에서 특정 키워드와 이슈번호를 같이 기입해주면 자동으로 Issue에 대한 처리도 같이 진행됩니다.

Read More

Insomnia로 REST API를 쉽게 테스트하자 😎

  • 1 min read

오늘 소개해드릴 툴은 REST API 테스팅 툴인 Insomnia 입니다. postman과 같이 API를 테스팅하기 위한 여러가지 기능들을 제공하고 있고, 개발자뿐만 아니라 보안쪽에서도 충분히 자주 사용할 수 있는 도구라서 간단하게 공유드릴까 합니다.

Read More

Ruby Style Guide와 Rubocop

  • 1 min read

오늘은 루비 개발 관련해서 좋은 가이드가 있어 공유드릴까 합니다. 정말 정리가 잘 되어있습니다. 천천히 내용 읽어보면서 고쳐야할 습관들이 많이 보이네요.

Read More

Ruby에서 Exception 처리( begin-rescue-else-ensure-end )

  • ~1 min read

벌써 7월이네요.. 오늘은 매번 코드 작성할때마다 귀찮지만, 뺴먹을 수 없는 중요한 친구에 Exception, 즉 예외처리에 이야기할까 합니다. 거의 정리 차원에서 간단하게 쓰는거니 빠르게 시작하죠.

Read More

JRuby로 Ruby와 Java 동시에 사용하기

  • 1 min read

개인적으로 BurpSuite의 Extender를 만들 때 Java를 사용했습니다. 당연히 Burp가 Java base이고, API 등의 사용성 때문에 Java로 개발하는 것이 일반적인데요, 오늘은 Jruby를 이용하여 Ruby와 Java를 혼용하여 사용하는 방법에 대해 이야기하려고 합니다.

Read More

Javascript를 이용하여 간단하게 카카오톡 공유(카카오링크) 적용하기

  • 2 min read

요즘은 SNS 공유 기능을 사용하지 않는 웹 페이지를 만나보기가 굉장히 어렵습니다. 특히나 블로그나 매체, 판매 사이트들은 컨텐츠의 공유에 있어 굉장히 좋은 방법이고 많이 사용되고 있기 떄문에 그렇다고 생각이 드네요. 이전부터 여러가지 SNS 서비스에 대해서 공유 버튼을 만들고 사용하다가 최근에는 google, twitter, facebook 정도만 유지하고 있었습니다.

Read More

Rails의 라우팅과 constraints를 이용하여 IP기반 ACL 만들기

  • 2 min read

Rails Application에서 접근제어를 하는 방법은 여러가지가 있습니다. 예전에 포스팅하기도 헀고, 튜토리얼에서도 기본적으로 이야기되는 HTTP Auth를 이용한 인증방식 부터 세션, 로그인 기반 인증까지 여러가지 형태로 구현이 가능하죠. 오늘은 가장 기본적인 접근제어인 IP 기반 ACL에 대한 이야기를 할까 합니다.

Read More

Rails development 환경에서 error 정보 줄이기

  • ~1 min read

rails application은 기본적으로 application 실행 시 development, test, production와 같이 실행 환경을 지정할 수 있습니다. 각각 실행 환경별로 디버그, 에러 처리 여부 등 환경과 처리 방식에 대해 결정할 수 있습니다.

Read More

Protocol-relative URL! //로 시작하는 URL

  • 1 min read

웹 코드에서 주소를 사용할 때 double slash(//)를 많이 사용하시나요? 요즘은 대체로 double slash를 많이 사용하는 것 같습니다. 아무런 생각없이 사용하면서 정작 http:// , https:// 와 같이 프로토콜 명시된 경우와 단순하게 double slash로 구성된 주소의 차이에 대한 궁금증을 가지지 않았었네요.

Read More

Vim에서의 개발을 위한 최소한의 plugin 설정

  • 1 min read

매번 느끼지만 글로 작성하지 않은 내용들은 나중에 다시 세팅하거나, 참고해야할 때 참 불편합니다. 꼭 필요할 때 보면 없다죠. 최근에도 vim 세팅을 다시 할일이 있어 하나하나 세팅하고 있는데, 한번쯤은 메모해두면 두고두고 볼 것 같다라는 생각이 들었습니다. 짧게나마 시간 내어서 글 작성해봅니다.

Read More

Learning Go Language - Hello world, GoRoutine

  • 2 min read

요즘 Go langage를 배워볼까 합니다. 그래서 아주 천천히 틈날때마다 보고있는데, 조금씩은 정리해서 포스팅해볼까 합니다. 아마 익숙해지면 Ruby와 섞어서 코딩하게 될 것 같네요.

Read More

Bookmarklet이란?

  • 1 min read

최근에 Bookmarklet의 존재를 알았습니다. 브라우저 AddOn만 개발해서 써오던 저에겐 나름대로 신세계 였네요. 오늘은 Bookmarklet에 대한 이야기를 하려합니다.

Read More

Rails에서 DB Column 추가하기

  • ~1 min read

rails는 database schema 등을 migration 파일로 관리합니다. 이를 이용하면 이미 만들어진 앱에서 DB Schema를 변경하거나 쉽게 Rollback할 수 있습니다.

Read More

XCode Simulator에 App(.ipa) 파일 설치하기

  • ~1 min read

취약점 테스트 기기로 쓰는 iOS 디바이스에 문제가 있어 Simulator를 알아보던 중 간단한 팁이 있어 작성합니다. 일반적으로 Simulator에 Xcode로 컴파일한 앱이 아니면 설치가 불가능합니다. 다만 약간의 트릭을 쓰면 쉽게 가능하지만요. 오늘은 app 파일인 .ipa(app)으로 Xcode Simulator에 설치해 봅시다.

Read More

Metasploit API와 msfrpcd, 그리고 NodeJS

  • 5 min read

요즘 metasploit의 rpc에 대해 굉장히 관심이 많습니다. 대표적으론 msgrpc plugin 부터 msfrpcd 데몬까지 metasploit에서 rpc를 이용할 수 있는 방법들을 많이 찾아보고 있지요.

Read More

RUBY에서 RQRCode를 이용하여 QR코드 생성하기

  • ~1 min read

오늘은 RQRCode에 대해 작성할까 합니다. RQRCode는 Ruby에서 QR코드를 다룰 수 있는 라이브러리입니다. 간단한 코드로 쉽게 QR코드 생성이 가능하기 떄문에 QR코드 관련 서비스나 Rails 내 QR 코드 사용 등 여러가지 방면으로 활용할 수 있겠네요.

Read More

이 특수문자는 어떻게 읽어야 할까요?

  • ~1 min read

보안전문가나 개발자같이 실무적인 IT 업무를 하다보면 특수문자에 대해 설명해야할 때가 많이 있습니다. 저 또한 개발자에게 매번 설명해야하고, 그 과정에서 특수문자에 대한 언급이 많기 때문에 모르는 부분은 일부러 찾아서 정리해두고 했습니다. 생각해보니 이런 내용은 공유되면 좋을 것 같아 글로 작성해봅니다.

Read More

Form에서 체크박스 여러개 값 전달하기

  • ~1 min read

웹 개발을 하다보면 체크박스를 이용하여 여러개의 값을 넘겨야 할 상황이 생깁니다. 대표적으로 옵션 같은 기능들이죠. form을 통한 전송 시 array 형태로 던지고 php에서 array로 받는다면 쉽게 구현할 수 있습니다.

Read More

[CODING] WebSocket - Overview , Protocol/API and Security

  • 1 min read

WebSocket이란?

WebSocket은 웹 페이지에서 실시간으로 동작하는 웹 서비스를 만들어 줄 수 있는 표준 기술입니다. 일반적으로 웹 프로토콜인 HTTP는 Request와 Response 기반으로 새로 요청이 발생하면 페이지를 다시 그려야하는 구조입니다. 덕분에 쿠키라는 개념도 사용되게 되었지요. (인증 정보를 유지하기 위해)

Read More

Ruby nokogiri를 이용한 Web Spider 만들기

  • 3 min read

지난 포스팅에선 nokogiri를 이용한 parsing 을 했다면 이번에는 조금 더 발전 시켜서 간단한 Spider를 만들어볼까 합니다. 물론 훨씬 좋은 라이브러리들이 있지만 가장 기본이되는 nokogiri를 잘 안다면 많은 도움이 있을 수 있겠지요.

Read More

Ruby Nokogiri를 이용한 Web Parsing

  • 2 min read

웹 서비스를 탐색하는 도구들을 만들다 보면 많이 접하게 되는 작업이 하나 있습니다. 바로 HTML, XML 등 구조화된 문서를 파싱하는 작업인데요. 오늘은 Ruby의 강력한 파싱 라이브러리인 Nokogiri에 대해 이야기할가 합니다.

Read More

[RUBY] 루비에서 Process/command 실행하기(Execute Process and command)

  • 2 min read

C언어부터 ruby, python 등등 여러가지 언어 중 하나라도 해보셨다면 정말 반가운 함수가 있습니다. 바로 system() 함수(C언어 기준)인데요, 이 함수를 통해 시스템에 명령을 내리거나 새로운 프로세스를 생성할 수 있는 함수이지요. 이 함수로 많은 노가다 작업이 줄게되지요.

Read More

Java Applet을 이용한 공격 방법들

  • 2 min read

웹 취약점에 대한 분석 시 주요 태그로 알려진 것들은 대다수 필터링 되어 있지만 간혹 빠지는 태그들이 있습니다. 그 중 오늘은 applet 태그에 대한 이야기를 하려합니다.

Read More

Ruby WEBrick에서 서버 사이드 코드 처리하기

  • 1 min read

WEBRick 또한 웹 서비스를 위한 라이브러리이기 때문에 간단한 라우팅 기능을 지원합니다. 이를 이용하면 Static 파일만 서빙하는게 아닌 실제 웹 요청 시 원하는 코드를 동작시킬 수 있습니다.

Read More

JS,CSS를 이용해 팝업 레이어 만들기

  • 1 min read

블로그 디자인 수정 중 검색 부분에 재미있는 생각이 나서 약간 작업을 하였습니다. 기존에 쓰던 검색창은 블로그에서 바로 보이고 입력 후 검색하는 방법으로 구성하였는데, 클릭하여 따로 팝업을 띄운 후 거기서 검색하는 방법이 더 좋을 것 같다는 생각에 수정하였습니다.

Read More

CSS를 통해 Body 태그 여백 없애기

  • ~1 min read

블로그 페이지 개편 중 계속 여백이 생겨서 하나하나 css 를 뒤져가며, 잘못 적용한 것이 있는지 찾아보았지만 답은 가까운 곳에 있었습니다. HTML에서 여백이 발생할 때 CSS나 HTML 속성으로 간단하게 해결이 가능합니다. 아래는 이번에 코드에 적용한 부분인데요, leftmargin, rightmargin 을 통해 좌우 여백을 줄여줬었습니다.

Read More

Javascript 이벤트 핸들러를 이용하여 Input 태그 엔터 처리 Char Codes)

  • 1 min read

웹 개발을 하다 보면 텍스트 박스에서 submit, button 을 누르지 않고 엔터만으로 데이터를 전송하거나 페이지를 이동하는 등 액션이 들어가야할 부분들이 있습니다. 간단하게 이벤트 핸들러랑 javascript 를 이용해서 텍스트 입력창에서 엔터를 누를 시 처리를 하도록 코드를 만들어볼 수 있습니다.

Read More

Javascript 코드 난독화(Code Obfuscation)와 JS Packing

  • 1 min read

코드 난독화란 코드를 쉽게 알아볼 수 없도록 만드는 기술입니다. 쉽게 생각하면 int a = 123 이란 코드를 int a = ((123+34+350-34-350)*0)+123 같이 좀 더 알아보기 어렵게 만드는 기술입니다. 물론 위의 대충 쓴 코드는 쉽게 볼 수 있지만 escape, unescape 함수 등을 이용해서 코드가 눈에 잘 들어오지 않도록 만들 수 있습니다.

Read More

rvm, rbenv를 통한 Ruby 버전 관리

  • ~1 min read

오랜만에 노트북에서 Metasploit 업데이트를 하였더니 패키지 하나가 의존성 문제가 걸렸습니다. gem 으로 설치하려 했으나, 발생하는 건 ruby 2.1 이상에서 설치 가능하다는 메시지였습니다.

Read More

iOS에서의 Python 2.7 버전 설치

  • ~1 min read

탈옥 iOS 기기에서 apt 패키지로 파이썬을 따로 설치할 수 있습니다. 다만 버전이 2.5 버전인 상태인데, 많은 모듈이나 프로그램들이 2.7 이상의 디펜던시를 가지는 경우가 있어 상황에 따라 2.7 버전을 직접 설치해야할 필요가 있습니다.

Read More