갤러리라고 설명되있는 페이지가 출력된다.home 버튼 외에는 입력 가능한 곳이 안보인다.힌트를 보면 관리자로 접근하라고 나와있다.조작가능한 URL을 이용해 admin으로 접근을 시도했다.\`admin.phpadminadmin 페이지에 접속하게 되면 HTTP Authen
로그인 페이지가 주어진다.문제 힌트로 git에 대한 document가 주어진다git를 해봤기 때문에 설정파일이 .git 디렉토리에 있다는 것을 알고있었다. \- 하하 \- 아?
로그인 페이지가 주어진다.guest로 로그인 가능하다.힌트로 jwt 크랙 document가 주어진다.jwt에서 payload를 admin으로 변경해주고,값의 변경을 체크하는 시그네처를 삭제해줘야 한다.헤더의 alg를 "none"으로 변경시그네처 부분을 완전 삭제,jwt
문제 json 형식의 데이터가 출력된다. 해당 데이터는 /token 에 대해 GET 방식으로 request하고, 얻은 토큰으로 /admin 에 대해 POST로 접근하라고 설명한다. 풀이 먼저, 그냥 /admin 페이지에 POST request 해보자 토큰을 요구하
Home, about, contact로 구성된 홈페이지가 주어지며각 페이지는 GET 파라미터인 page로 전달된다.
login과 home 이 있는 홈페이지에 접속된다.경로를 바꿔서 상위 경로로 접근을 시도해본다.(LFI)비허가된 경로라는 에러메시지가 출력된다.Warning: file_exists(): open_basedir restriction in effect. File(../as
패스워드만 입력받는 로그인창이 주어진다.$\_POST\['key']=value과 같은 범용 딕셔너리($\_GET, $\_POST, $\_SERVER 등)를 key와 value를 쌍으로 한 변수로 생성하는 것을 말한다.이렇게 되면 해당 공격자가 php 코드안에서 처리될
zip 파일을 업로드 할 수 있는 폼이 주어진다.업로드할 경우, unzip을 진행하며 unzip된 파일은 디렉토리 탐색기 형식으로 볼 수 있다.zip 과 관련된 취약점을 찾아보았다.josipfranjkovic.blogspot.com - Reading local file
닉네임을 입력하는 폼이 있으며, 닉네임을 입력할 경우 바로 아래 레이아웃에 출력된다.template injection 문제이며, 힌트로 주어진 portswigger 문서를 참고하여 풀 수 있었다.간단히 html 같은 정적인 문서를 프로그래밍 언어처럼 동적으로 표현할 수
디렉토리 목록과 해당 디렉토리에 존재하는 파일 목록을 출력해준다.GET 파라미터로 전달되며, files는 디렉토리 경로 f는 파일명 용도로 사용되는듯 하다.files 경로를 ../를 입력하여 상위 경로를 확인해본다. 필터가 따로 되지않아 상위 경로에 있는 admin 폴
접근 가능한 페이지가 링크형태로 존재한다.페이지 파일에서 패스워드를 획득하라는 힌트가 주어진다.LFI를 해보면 필터로 상대경로 인젝션이 막혀있다.이것을 double encoding으로 우회해주어야 한다.참고: doouble encoding클라이언트에서 소스코드의 출력을
PHP loose comparison - Type Juggling - OWASP를 보며 내용을 정리하겠다.PHP에서는 두 가지의 비교모드가 존재한다.Has two main comparison modes, lets call them loose (==)and strict
preg_replace가 실행될 때의 인자를 설정할 수 있는 폼이 주어진다.If this deprecated modifier is set, preg_replace() does normal substitution of backreferences in the replace
username과 password를 입력받는 폼이 주어진다.기본 구문인 'or 1=1 >Warning: SQLite3::query(): Unable to prepare statement: 1, unrecognized token: "unrecognized token: "
id와 password를 입력하는 폼이 주어진다.id list 링크 버튼이 존재하고, 누르면 admin 계정이 존재하는 것을 확인할 수 있다.노멀한 injection을 시도해보면 로그인에 실패한다.힌트를 보면 GBK라고 나와있는데 위키를 보면GBK is an exten
home, search, login 페이지가 존재한다.home은 news와 news_id 파라미터를 전달한다.search는 search, 즉 검색할 문자열을 파라미터로 전달한다.home에서 sqlinjection을 시도해보았지만 취약점은 발생하지 않았다.'search에
XSL 파일을 select 형식으로 입력받아 해당 XSL stylesheet로 문서를 변환하여 출력해준다.파일명을 임의로 설정 가능하므로 내 서버의 파일을 업로드 시키는 Remote XSL Injection을 시도해볼 수 있겠다..passwd의 파일을 읽는 것이 목적이
로그인 페이지가 나온다.로그인에 필요한 정보 조회를 LDAP로 하는 것처럼 보인다.먼저 LDAP가 무엇인지 확인해보자DAP란 X.500에서 사용하는 디렉토리 서비스 검색 프로토콜인데이 DAP를 경량화 한 것이 LDAP(Lightweight DAP)이다.https
로그인 페이지가 존재한다.아이디와 패스워드는 GET 파라미터로 전달된다.NoSQL 인젝션으로는 몽고DB를 대상으로 한 인젝션 기법이 일반적이다.시도해보자login=admin$&pass\[$ne]=test하지만 단순히 admin으로 연결됬다는 문구만 출력된다.다른 계정을
News 페이지와 각 게시글의 id를 GET 파라미터로 전달하여 출력시켜주는 페이지가 보여진다.따로 필터링 되있지 않다.union select를 이용, sqlite_master 테이블에서 admin계정이 위치한 테이블을 검색한다.limit 함수로 테이블 명을 하나씩 검
로그인 페이지가 주어지고 PHP 소스를 확인할 수 있다.또한, 자동로그인 설정 버튼이 존재한다.소스를 확인해보자POST 파라미터로 아이디, 패스워드값이 전달됬으면 그걸 사용하고그게 아닌, autologin 쿠키값으로 계정정보가 전달됬으면 이 값을 사용한다.$auth에
Home과 Search 페이지가 존재한다.Search 페이지에서 검색창에 아이디를 입력하면 해당 아이디에 대한 number id 값과 email값을 출력해준다.제공해준 문서 - Routed sql injection를 보면 Routed SQL Injection에 대해서
유저를 가입할 수 있는 Register 페이지와
RSS 링크(XML 파일)를 입력받는 RSS 리더 페이지와로그인 페이지가 주어진다.로그인 페이지에서는 관리자 비밀번호를 입력해야지 접근가능하다.XXE(XML eXternal Entities) 공격은 외부의 엔티티를 삽입하는 공격이다.필요한 선행지식은 다음 포스팅을 참고
로그인 페이지가 존재하며친절히 유저정보를 알려준다.먼저 XPath에 대한 개념은 다음 포스팅으로 이해하자.https://velog.io/@woounnan/WEB-XPathXPath에는 SQL과 비슷하게 연산자 등의 동적인 기능을 실행하는 문법이 존재하기 때문에
credit을 1개씩 획득할 수 있는 버튼이 있다.credit이 오를 때마다 쿠키값이 변한다.크레딧을 한 번에 많이 올리는 것이 목표이다.counter 쿠키값을 보면 base64로 인코딩 되었다는 것을 알 수 있다.일단 디코딩 시켜보자.gzip 파일이다.파일 확장자를
There's a troll who thinks his challenge won't be solved until the heat death of the universe.nc challenges.tamuctf.com 4765nc로 접속해서 프로그램 동작을 확인해본다.다음
We put together a demo for our high performance computing server. Why don't you check it out?nc challenges.tamuctf.com 2783nc로 접속해보자.
문제 문제파일을 실행해본다. 먼저 사용자 입력을 받고, gzip 형식이 아니라는 메시지를 출력해주고 있다. 풀이 분석 IDA를 이용하여 코드를 확인해보자. >main gunzip 함수를 호출하고 있다. >gunzip 가장 먼저 호출하는 subprocess()
앞서 확인한 'howdy'와 'gig 'em을 입력받는 코드이다.특별한 것 없다.다음으로 마지막 입력을 받는 코드이다.순서는 다음과 같다.먼저 비교 대상 문자열을 'whoop'으로 설정한다.그리고 heap을 할당받아서 어떤 값들을 세팅한다.마지막으로 s\[0]과 'wh
로그인 페이지가 존재하고콘텐츠를 읽는 페이지가 존재한다.하지만, 권한이 없다고 출력된다.에러 기반 SQL 인젝션을 시도해보자.로그인 페이지에서는 대부분이 필터되서 시도할 수 없었고,콘텐츠 페이지에서 order 파라미터를 통해 인젝션이 가능했다.입력한 값이 order 명
# Forensic ### GTF Poem 50 Points
로그인 페이지가 있고가입 페이지가 있다.rootme 참조 문서를 보면 Error Base SQL Injection를 설명한 문서라 관련이 없다고 생각할 수 있지만, 다음과 같은 사실을 캐치할 수 있다.insert시 값을 기입하는 곳에 상수값 대신 SQL 쿼리를 삽입할
별볼일없는 Home과유저이름을 검색할 수 있는 Members와로그인할 수 있는 Login 페이지가 존재한다.원리는 이전 문제 풀이와 크게 다르지 않다.https://velog.io/@woounnan/Rootme.org-XPath-injection-Authent
Challenge와 그에 맞는 flag 값을 요구하고 있다.Challenge 값을 주어진 nosqlblind로 설정하고 접속을 시도해보면flag가 맞지 않을 때의 FALSE에 해당하는 페이지와NoSQL Injection으로 조건문을 일치시켰을 때 TRUE에 해당하는 페
문제파일을 실행해보자.방 목록을 확인하고, 접속하고, 그 방의 정보를 확인할 수 있다.IDA로 프로그램 코드를 확인해보자.main에서 이 game 함수를 실행하게 된다.처음에 menu 번호를 입력받으며,입력된 menu 번호가 2번일 경우 접속할 방을 선택하게 되는데 방
문제파일을 실행해보자.이름과 명령어를 입력받는 프로그램이다.스택에 이름을 입력받고 class를 호출한다.heap에 명령어를 입력받고, 입력받은 명령어와 cmdtable을 인자로하여 cmd_dispatch를 호출한다.
Reversing Pwnable
Time based SQL Injection 기법에 대해 알아보자.
My friend only speaks in numbers. What does he say?84 71 50 48 123 110 117 109 98 101 114 115 95 97 110 100 95 116 101 120 116 95 103 111 101 115 95 1
tcache poisoning 취약점 실습을 위해, 끝난지 좀 지난 대회이지만 문제파일을 받아서 풀었다.해당 문제는 glibc-2.26을 로드하여 사용하고 있다.라이브러리와 관련된 취약점이므로 해당 라이브러리를 사용하는 환경에서 실습해야 한다.문제파일을 실행해보자.노트
4가지의 메뉴가 있다.bowls를 확인하고 구매하거나 판매할 수 있으며, about 페이지를 출력해준다.IDA로 주요 함수를 확인해본다.main메뉴를 입력받고 분기한다.주목할 것은 그 전에 createMoss라는
I was playing around with some stuff on my computer and found out that you can generate QR codes! I tried to make an online QR code generator, but it
Hmm, do pirates really think they can hide a treasure without us knowing? Find the treasure and prove they are wrong. Check here: https://treasur
seccomp의 이해를 위한 실습이름을 입력하면 메뉴가 주어진다.피드백 읽기 및 쓰기, 프로그램 종료로 구분된다.IDA로 확인해보자.main이름을 입력받고 clone()을 이용하여 fn 루틴에 대한 서브 프로세스를 생성한다.자식 프로세스의 종료를 기다린 후 free()
문제페이지에 접속해보면문자열을 입력받고 제출할 경우 img 태그가 삽입된다.전체 html 소스를 확인하자.하나씩 확인해보자.페이지가 로드되면 ajax 쿼리로 get 요청을 한 후, 그 결과를 bytes에 저장한다.그 후 폼이 입력되면 assemble_png 함수가 호출
One of your customer all proud of his new platform asked you to audit it. To show him that you can get information on his server, he hid a file "flag.
Silence is gold. I listen to every move on this network. And I think I got something interesting.Chall.pcapng패킷 덤프 파일이 주어진다.TACACS는 인증에 사용되는 네트워크 프로토콜
Find the (supposed to be) confidential data in this ethernet frame: 00 05 73 a0 00 00 e0 69 95 d8 5a 13 86 dd 60 00 00 00 00 9b 06 40 26 07 53 00
https://uploooadit.oooverflow.io/Files:app.py358c19d6478e1f66a25161933566d7111dd293f02d9916a89c56e09268c2b54cstore.py dd5cee877ee73966c53f0577dc8
This site is telling me all I need to do is click a button to find the flag! Is it really that easy?문제 페이지에 접속하면 동작하지 않는 버튼이 있다.소스를 보면 flag를 출력하는 페이지로
Aneesh wants to acquire a summer bod for beach week, but time is running out. Can you help him create a plan to attain his goal?nc p1.tjctf.org 8008단순
My friend has some top-secret government intel. He left a message, but the government censored him! They didn't want the information to be leaked, but
소스를 보면 가장 아래에 플래그가 있다.온라인 스테가노 그래피 사이트에서 디코딩시키면 답이 나오지 않는다.bintext로 문자열을 확인하니 플래그가 있다.쉬프트 암호화다. 암호문을 디코딩 사이트에서 변환시키면 +5에서 플래그를 확인할 수 있다.wechall의 robot
서버에 접속하면 메뉴를 선택할 수 있다.1번을 입력하면 base64 인코딩된 평문을 입력받는데, 이것을 AES 암호화한 결과를 출력해준다.2번을 입력하면 저장되어 있는 flag 값을 암호화한 결과를 출력해준다.먼저 소스를 확인해본다.server.pyflag를 암호화할
실행파일 인자로 파일, ip를 입력받고파일의 내용을 해당 ip의 18211 포트로 전송한다.level10 디렉토리에는 실행파일인 flag10과 플래그가 담긴 것으로 추측되는 token 파일을 확인할 수 있는데 당연하게도 token 파일을 전송하면 'You don't h
https://inspector-gadget.web.hsctf.com/주석에 플래그가 적혀있다;flag{n1ce_j0b_0p3n1nG_th3_1nsp3ct0r_g4dg3t}
Render me If you can.babyjs.ctf.defenit.krbabyjs.tar.gz접속하면 write 링크가 있고, 해당 페이지로 이동하면 내용을 입력할 수 있는 폼이 주어진다.제공된 서버파일을 확인한다.app.js백엔드는 express로 구현되어 있다