# GTFOBins

> Clean Markdown view of GeekNews topic #29001. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=29001](https://news.hada.io/topic?id=29001)
- GeekNews Markdown: [https://news.hada.io/topic/29001.md](https://news.hada.io/topic/29001.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-04-29T10:09:02+09:00
- Updated: 2026-04-29T10:09:02+09:00
- Original source: [gtfobins.org](https://gtfobins.org/)
- Points: 1
- Comments: 1

## Topic Body

- **Unix 바이너리 목록**을 기능별로 정리해 두었고, 각 바이너리에서 가능한 동작을 **상세 페이지와 앵커 링크**로 바로 연결해 둠
- 반복적으로 붙는 분류는 **Shell**, **File read**, **File write**, **Command**, **Inherit**, **Upload**, **Download**, **Reverse shell**, **Library load**, **Privilege escalation**이며 일부 항목에는 **Bind shell**도 함께 붙음
- **File read**와 **Shell**은 매우 넓게 분포하고, dd·sed·sqlite3 같은 도구는 **읽기와 쓰기**를 함께 가져 단순 조회형 도구와의 경계가 흐려짐
- apt·git·journalctl·systemctl 같은 도구는 **Command**와 **Inherit**를 자주 포함하고, bee·pipx·sqlmap·vim 계열처럼 **네트워크 전송과 셸 동작**을 함께 가진 다기능 바이너리도 반복적으로 나타남
- **Privilege escalation**은 별도 링크가 붙은 일부 바이너리에 한정되어 나타나며, 7z부터 zypper까지 이어지는 폭넓은 목록이 **일반 도구의 동작 조합 차이**를 한눈에 드러냄

---

### 대표 기능 분포
- **파일 읽기** 전용 또는 읽기 중심 항목이 매우 넓게 분포함
  - [7z](https://gtfobins.org/gtfobins/7z/), [cat](https://gtfobins.org/gtfobins/cat/), [grep](https://gtfobins.org/gtfobins/grep/), [jq](https://gtfobins.org/gtfobins/jq/), [od](https://gtfobins.org/gtfobins/od/), [tail](https://gtfobins.org/gtfobins/tail/), [wc](https://gtfobins.org/gtfobins/wc/), [zcat](https://gtfobins.org/gtfobins/zcat/) 등은 [File read](https://gtfobins.org/) 중심으로 연결됨
- **셸 실행** 가능 항목도 매우 많음
  - [bash](https://gtfobins.org/gtfobins/bash/), [awk](https://gtfobins.org/gtfobins/awk/), [find](https://gtfobins.org/gtfobins/find/), [less](https://gtfobins.org/gtfobins/less/), [python](https://gtfobins.org/gtfobins/python/), [ruby](https://gtfobins.org/gtfobins/ruby/), [tar](https://gtfobins.org/gtfobins/tar/), [vi](https://gtfobins.org/gtfobins/vi/), [zsh](https://gtfobins.org/gtfobins/zsh/) 등이 [Shell](https://gtfobins.org/)을 가짐
- **파일 쓰기**와 읽기를 함께 가진 항목이 많아 단순 조회형 도구와의 경계가 흐려짐
  - [dd](https://gtfobins.org/gtfobins/dd/), [cpio](https://gtfobins.org/gtfobins/cpio/), [ed](https://gtfobins.org/gtfobins/ed/), [emacs](https://gtfobins.org/gtfobins/emacs/), [nano](https://gtfobins.org/gtfobins/nano/), [sed](https://gtfobins.org/gtfobins/sed/), [sqlite3](https://gtfobins.org/gtfobins/sqlite3/), [xxd](https://gtfobins.org/gtfobins/xxd/) 등이 여기에 속함
- **명령 실행**이나 **권한 상속**은 패키지 관리자, 시스템 도구, 대화형 프로그램에서 자주 나타남
  - [apt](https://gtfobins.org/gtfobins/apt/), [apt-get](https://gtfobins.org/gtfobins/apt-get/), [git](https://gtfobins.org/gtfobins/git/), [journalctl](https://gtfobins.org/gtfobins/journalctl/), [man](https://gtfobins.org/gtfobins/man/), [systemctl](https://gtfobins.org/gtfobins/systemctl/), [timedatectl](https://gtfobins.org/gtfobins/timedatectl/), [zless](https://gtfobins.org/gtfobins/zless/)가 대표적임

### 다기능 바이너리
- 여러 동작을 한 번에 가진 **다기능 바이너리**가 반복적으로 등장함
- ## Inherit 기반 다기능 항목
  - [apport-cli](https://gtfobins.org/gtfobins/apport-cli/), [batcat](https://gtfobins.org/gtfobins/batcat/), [cargo](https://gtfobins.org/gtfobins/cargo/), [crash](https://gtfobins.org/gtfobins/crash/), [gcloud](https://gtfobins.org/gtfobins/gcloud/), [git](https://gtfobins.org/gtfobins/git/), [journalctl](https://gtfobins.org/gtfobins/journalctl/), [man](https://gtfobins.org/gtfobins/man/), [opencode](https://gtfobins.org/gtfobins/opencode/), [psql](https://gtfobins.org/gtfobins/psql/), [run-mailcap](https://gtfobins.org/gtfobins/run-mailcap/), [systemd-resolve](https://gtfobins.org/gtfobins/systemd-resolve/)는 [Inherit](https://gtfobins.org/)와 함께 Shell, Command, File read, File write가 묶여 있음
- ## 네트워크와 파일 이동까지 포함한 항목
  - [bee](https://gtfobins.org/gtfobins/bee/), [byebug](https://gtfobins.org/gtfobins/byebug/), [dstat](https://gtfobins.org/gtfobins/dstat/), [easy_install](https://gtfobins.org/gtfobins/easy_install/), [facter](https://gtfobins.org/gtfobins/facter/), [irb](https://gtfobins.org/gtfobins/irb/), [knife](https://gtfobins.org/gtfobins/knife/), [pipx](https://gtfobins.org/gtfobins/pipx/), [poetry](https://gtfobins.org/gtfobins/poetry/), [rake](https://gtfobins.org/gtfobins/rake/), [sqlmap](https://gtfobins.org/gtfobins/sqlmap/), [vagrant](https://gtfobins.org/gtfobins/vagrant/), [volatility](https://gtfobins.org/gtfobins/volatility/)는 Reverse shell, Upload, Download, Library load까지 함께 가짐
- ## 편집기와 디버거 계열
  - [gdb](https://gtfobins.org/gtfobins/gdb/), [nvim](https://gtfobins.org/gtfobins/nvim/), [rvim](https://gtfobins.org/gtfobins/rvim/), [view](https://gtfobins.org/gtfobins/view/), [vim](https://gtfobins.org/gtfobins/vim/), [vimdiff](https://gtfobins.org/gtfobins/vimdiff/)는 Inherit와 함께 Shell, Reverse shell, Bind shell 또는 File read/write, Upload, Download, Library load를 묶어 둠
- ## 패키지 관리자와 런타임 계열
  - [apt](https://gtfobins.org/gtfobins/apt/), [apt-get](https://gtfobins.org/gtfobins/apt-get/), [bundle](https://gtfobins.org/gtfobins/bundle/), [bundler](https://gtfobins.org/gtfobins/bundler/), [pip](https://gtfobins.org/gtfobins/pip/), [rpm](https://gtfobins.org/gtfobins/rpm/), [rpmdb](https://gtfobins.org/gtfobins/rpmdb/), [rpmquery](https://gtfobins.org/gtfobins/rpmquery/), [rpmverify](https://gtfobins.org/gtfobins/rpmverify/), [yum](https://gtfobins.org/gtfobins/yum/)은 셸, 파일 접근, 네트워크 동작이 함께 붙는 경우가 많음

### 네트워크, 셸, 라이브러리 로드
- **업로드/다운로드** 기능은 네트워크 도구뿐 아니라 셸과 언어 런타임에도 함께 붙어 있음
- ## 전송 중심 도구
  - [ab](https://gtfobins.org/gtfobins/ab/), [curl](https://gtfobins.org/gtfobins/curl/), [finger](https://gtfobins.org/gtfobins/finger/), [ftp](https://gtfobins.org/gtfobins/ftp/), [nc](https://gtfobins.org/gtfobins/nc/), [scp](https://gtfobins.org/gtfobins/scp/), [sftp](https://gtfobins.org/gtfobins/sftp/), [smbclient](https://gtfobins.org/gtfobins/smbclient/), [ssh](https://gtfobins.org/gtfobins/ssh/), [tar](https://gtfobins.org/gtfobins/tar/), [tftp](https://gtfobins.org/gtfobins/tftp/), [wget](https://gtfobins.org/gtfobins/wget/), [whois](https://gtfobins.org/gtfobins/whois/)가 Upload 또는 Download를 가짐
- ## Reverse shell과 Bind shell
  - [bash](https://gtfobins.org/gtfobins/bash/), [gawk](https://gtfobins.org/gtfobins/gawk/), [go](https://gtfobins.org/gtfobins/go/), [jjs](https://gtfobins.org/gtfobins/jjs/), [julia](https://gtfobins.org/gtfobins/julia/), [ksh](https://gtfobins.org/gtfobins/ksh/), [lua](https://gtfobins.org/gtfobins/lua/), [nawk](https://gtfobins.org/gtfobins/nawk/), [nc](https://gtfobins.org/gtfobins/nc/), [nmap](https://gtfobins.org/gtfobins/nmap/), [node](https://gtfobins.org/gtfobins/node/), [openssl](https://gtfobins.org/gtfobins/openssl/), [pandoc](https://gtfobins.org/gtfobins/pandoc/), [php](https://gtfobins.org/gtfobins/php/), [ruby](https://gtfobins.org/gtfobins/ruby/), [socat](https://gtfobins.org/gtfobins/socat/), [socket](https://gtfobins.org/gtfobins/socket/), [tclsh](https://gtfobins.org/gtfobins/tclsh/), [telnet](https://gtfobins.org/gtfobins/telnet/), [zsh](https://gtfobins.org/gtfobins/zsh/) 등이 여기에 포함됨
- ## Library load가 붙는 항목
  - [bash](https://gtfobins.org/gtfobins/bash/), [byebug](https://gtfobins.org/gtfobins/byebug/), [curl](https://gtfobins.org/gtfobins/curl/), [ffmpeg](https://gtfobins.org/gtfobins/ffmpeg/), [gdb](https://gtfobins.org/gtfobins/gdb/), [gem](https://gtfobins.org/gtfobins/gem/), [gimp](https://gtfobins.org/gtfobins/gimp/), [irb](https://gtfobins.org/gtfobins/irb/), [knife](https://gtfobins.org/gtfobins/knife/), [ldconfig](https://gtfobins.org/gtfobins/ldconfig/), [mysql](https://gtfobins.org/gtfobins/mysql/), [nginx](https://gtfobins.org/gtfobins/nginx/), [nvim](https://gtfobins.org/gtfobins/nvim/), [openssl](https://gtfobins.org/gtfobins/openssl/), [pip](https://gtfobins.org/gtfobins/pip/), [python](https://gtfobins.org/gtfobins/python/), [rake](https://gtfobins.org/gtfobins/rake/), [ruby](https://gtfobins.org/gtfobins/ruby/), [ssh-keygen](https://gtfobins.org/gtfobins/ssh-keygen/), [tclsh](https://gtfobins.org/gtfobins/tclsh/), [vim](https://gtfobins.org/gtfobins/vim/), [volatility](https://gtfobins.org/gtfobins/volatility/), [wish](https://gtfobins.org/gtfobins/wish/), [yum](https://gtfobins.org/gtfobins/yum/) 등이 포함됨

### 권한 상승 항목
- **Privilege escalation**은 별도 항목으로 붙은 바이너리에 한정돼 나타남
- ## 권한 상승 링크 목록
  - [chattr](https://gtfobins.org/gtfobins/chattr/#privilege-escalation)
  - [chmod](https://gtfobins.org/gtfobins/chmod/#privilege-escalation)
  - [chown](https://gtfobins.org/gtfobins/chown/#privilege-escalation)
  - [cp](https://gtfobins.org/gtfobins/cp/#privilege-escalation)
  - [getent](https://gtfobins.org/gtfobins/getent/#privilege-escalation)
  - [install](https://gtfobins.org/gtfobins/install/#privilege-escalation)
  - [ln](https://gtfobins.org/gtfobins/ln/#privilege-escalation)
  - [mount](https://gtfobins.org/gtfobins/mount/#privilege-escalation)
  - [mv](https://gtfobins.org/gtfobins/mv/#privilege-escalation)
  - [passwd](https://gtfobins.org/gtfobins/passwd/#privilege-escalation)
  - [setcap](https://gtfobins.org/gtfobins/setcap/#privilege-escalation)
  - [setfacl](https://gtfobins.org/gtfobins/setfacl/#privilege-escalation)
  - [unsquashfs](https://gtfobins.org/gtfobins/unsquashfs/#privilege-escalation)
  - [unzip](https://gtfobins.org/gtfobins/unzip/#privilege-escalation)

## Comments



### Comment 56527

- Author: neo
- Created: 2026-04-29T10:09:03+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47931035) 
- 댓글들에서 헷갈려하는 것 같아서, 이게 **보안/CTF 문맥**에서 언제 쓰이는지 예를 들면 이렇다  
  제한된 셸이나 일부 명령/바이너리만 실행 가능한 환경에서, 보통 인자는 꽤 자유롭게 넣을 수 있음  
  그때 **GTFOBins**를 이용하면 파일 읽기/쓰기나 명령 실행까지 이어서 제한된 컨텍스트를 탈출해 셸을 얻을 수 있음  
  누군가 **sudo**를 열어두거나 GTFOBin에 **SUID bit**를 줬다면, 설정한 사람도 몰랐던 방식으로 민감한 파일을 읽거나 쓰고 권한 있는 명령을 실행할 수도 있음
  - 이런 건 **claude-code** 같은 도구에도 꽤 해당됨  
    권한 처리가 block-list와 allow-list 중심이라 꽤 원시적인 편임  
    한 세션에서 실수로 Claude에 **powershell** 권한을 준 적이 있는데, 그 뒤로 git 같은 도구가 막히면 같은 일을 하는 powershell 스크립트를 써서 실행하며 막힌 권한을 우회하더라  
    정상적인 시스템이라면 powershell을 일반 allow-list에 넣진 않겠지만, 도구별 허용 수준의 틈이 있으면 이 페이지의 기법들로 충분히 돌아갈 수 있어 보임
  - **권한 상승 중재**를 한다는 일부 엔터프라이즈 보안 소프트웨어도 비슷하게 위험할 수 있음  
    한 회사에서 본 배포 방식은 관리자가 넣은 allowlist의 프로그램은 비밀번호 없이 `sudo`로 실행되게 만들었고, 처음부터 **vim**, **bash** 같은 범용 도구들이 들어가 있었음  
    재택근무하던 입장에선 오히려 다행이라 느꼈는데, 내 컴퓨터를 "보호"한다던 이 소프트웨어가 잠깐 자리 비우고 화면 잠금을 잊었을 때 누가 와서 뭔가 실행하기 훨씬 쉬운 상태로 만들었기 때문임
  - 이건 결국 **restricted shell**이 실제로는 얼마나 안 막히는지 보여주는 꽤 포괄적인 가이드처럼 보임
  - 구체적인 예도 있음  
    몇 년 전 지원팀이 `tcpdump`로 네트워크 캡처를 해야 해서, 빨리 처리하려고 인자를 어느 정도 열어둔 sudo 규칙을 넣었음  
    포트나 NIC가 바뀔 수 있으니 그땐 그게 자연스러워 보였지만, 사실 `tcpdump`의 `-z` 옵션으로 압축 명령을 지정할 수 있어서 거기에 "특별한" 명령을 넣으면 서버를 그대로 장악할 수 있음  
    `sudo tcpdump -i any -z '/home/despicable_me/evil_cmd.sh' -w /tmp/dontcare.pcap -G 1 -Z root`  
    사소해 보이지만 이런 건 정말 놓치기 쉬움  
    요즘은 **apparmor** 같은 계층이 이런 위험을 줄여주기도 하지만, 그만큼 다른 골칫거리도 생기고 여전히 잘못 설정하기 쉬움
  - 이걸 보고 있으니, AI가 **샌드박스 우회법**을 학습하도록 정리된 목록 같다는 생각도 듦

- 마지막으로 이런 비슷한 걸 써본 건 **1995년쯤 Windows 3.11**이 깔린 중등학교 컴퓨터였음  
  승인된 몇 개 앱만 실행되도록 막아놨는데 그중 하나가 Word였음  
  Word에서는 매크로를 쓰고 shell로 다른 앱을 실행할 수 있었음  
  그래서 몇 개 앱만 보이던 잠긴 컴퓨터가 사실상 뭐든 실행 가능한 상태가 됐음  
  당시엔 꽤 짜릿했고, 그 이후로는 비슷한 일을 거의 못 봤음  
  가끔 상점이나 쇼핑몰의 터치 정보 디스플레이에서 **kiosk mode** 탈출이 가능하다는 얘기를 보는데, 그것도 비슷한 부류 같음

- `restic - Shell, Command, Upload`를 보니, 백업을 root로 돌리지 않게 손본 게 조금은 정당화되는 느낌임  
  대신 일반 사용자로 실행하되 **read-all-files capability**만 주고 로그인 셸은 없앴음  
  물론 데스크톱에서는 과할 수도 있고, 거기까지 뚫린 공격자라면 어차피 거의 모든 파일을 읽고 백업에 백도어를 심을 수도 있음  
  [0] [https://man7.org/linux/man-pages/man7/capabilities.7.html](<https://man7.org/linux/man-pages/man7/capabilities.7.html>)
  - 제약을 보면 그냥 "그럼 **우회용 헬퍼**를 하나 써서 돌아가면 되지"라고 판단하는 LLM의 성향이, 예전 세계의 가정을 꽤 무너뜨리는 것 같음  
    원격 인간 공격자, 원격 봇 공격자, 어느 정도는 로컬 인간 공격자까지는 대응법이 있지만, **로컬에서 스스로 코드를 쓰는 봇 공격자**는 예전보다 훨씬 더 신경 써야 할 대상이 됐음  
    이건 악성코드와도 카테고리가 완전히 같진 않음  
    나도 컨테이너를 관련 경계로 보고 내부 프로세스를 전부 root로 돌리게 만든 적이 있는데, LLM이 끼면 OS 레벨 보안이 갑자기 더 중요해진 건지, 아니면 오히려 무의미해진 건지 판단이 잘 안 섬

- 헷갈리는데, 이건 `cat`이 없을 때 `cat /path/to/input-file` 대신 `base64 /path/to/input-file | base64 --decode`를 쓰라는 뜻인가  
  아니면 `base64 /path/to/input-file | base64 --decode`가 파일 읽기 권한 자체를 우회한다는 뜻인가
  - 전자 쪽이 맞음  
    호출된 프로세스는 보통 그걸 실행한 사용자의 권한을 그대로 물려받고, **setuid bit**가 있을 때만 예외가 생김  
    요지는 표준 Unix 도구를 꺼서 공격자의 **lateral movement**를 막으려는 환경에서, 다른 도구로 같은 일을 할 수 있다는 데 있음
  - **블랙리스트 기반 명령 제한**으로 권한을 막는 방식은 원래부터 잘 안 통했고 지금도 마찬가지라는 뜻임
  - 후자가 아니라 전자임  
    권한 자체를 뚫는 게 아니라, 몇 개 명령만 허용된 **제한 셸**에서 같은 결과를 다른 바이너리로 내는 이야기임  
    이런 건 CTF에서 정말 흔함
  - 다만 읽을 수 없는 파일이 있고, 대신 **root로 base64 실행**이 가능하다면 이야기가 달라짐  
    root 권한으로 `base64`를 돌려 파일 내용을 base64로 인코딩하고, 그 출력을 다른 base64 프로세스로 디코드하면 결국 파일 내용을 볼 수 있음  
    결과적으로는 단계만 늘어난 `cat`과 같음
  - 그럴 거면 **tar 파이프**가 더 가볍지 않나 싶기도 함

- 예전에 이런 도구 중 하나의 유지보수자였는데, 누가 그걸로 **셸을 따는** 걸 보니 웃기더라  
  창의적이고 재밌고, 자료로서도 좋음

- `hackthebox.eu` 할 때 이걸 **아주 많이** 써먹었음

- **GTFOBins**는 나온 지 꽤 됐고, AI 이전부터 유용한 자료였음
  - 그래서 앞으로가 더 걱정됨  
    AI가 유용한 이유 자체가 결국 이미 존재하는 이런 자료들을 끌어올 수 있기 때문임

- `base64`가 목록에 있는 걸 보니 잘 이해가 안 됨  
  내 생각엔 그건 사용자가 이미 접근 가능한 파일을 읽는 것밖엔 못 할 텐데, 내가 착각하는 건가  
  아니면 **오설정된 시스템의 로컬 보안 제한 우회**라는 설명이 내가 이해한 뜻과 다른 건가
  - 핵심은, 잘못 설정된 제한 셸이나 명령 접근만 주어진 경우에도 저 목록의 도구로 그 사용자가 원래 비제한 환경에서 가졌을 접근 범위 일부를 되찾을 수 있다는 데 있음  
    가장 단순한 예로 기본 셸을 **rbash**로 바꿔놨더라도 사용자가 그냥 `bash`를 실행해 일반 셸로 들어갈 수 있으면 의미가 사라짐
  - 예를 들어 `sudoers`가 **base64를 root로 실행**하도록 허용해뒀을 수도 있음  
    왜 그렇게 했는지는 모르겠지만, 그런 상황이라면 의도된 권한 제한을 우회해 시스템의 어떤 파일이든 읽을 수 있게 됨  
    또는 **Claude Code**에 `base64` 실행을 검토 없이 허용해두면 `.env` 같은 비밀 파일까지 읽게 열어주는 셈일 수도 있음
  - 흔한 상황은, 몇몇 도구가 **root 권한**으로 실행 가능하다는 것임  
    `sudo -l`로 명시적으로 허용돼 있거나, 다른 무언가가 root로 그 도구를 호출하는 식이 많음

- 이런 우회에 대한 **완화 방법**도 같이 보여주면 좋겠음  
  예를 들어 `more`로 셸을 얻는 경우라면  
  `more` 실행 전에 `SHELL`을 `/bin/false`로 설정하기  
  **secure mode**의 `less`로 바꾸기  
  `sudo`로 `more`를 쓴다면 **NOEXEC flag** 쓰기 같은 식임
  - 가장 좋은 완화책은 사용자가 읽거나 쓰면 안 되는 파일의 **실제 권한**을 제대로 설정하는 것임  
    그 외 방식은 결국 운에 기대는 면이 큼

- 꽤 멋지고, 예상 못 한 창의적인 접근도 보임  
  예를 들어 **yt-dlp** 같은 건 생각도 못 했음  
  그냥 깔아두는 걸 다시 생각해봐야겠음
