노션으로 작성했기에, 아래 링크로 접속한다면 볼 수 있습니다. https://dyp4r.notion.site/CVE-2021-44228-log4shell-2a96306d9fce4c438a2f6e602c518507?pvs=4
분류 전체보기
위는 ./files 폴더 내의 test.txt 파일을 읽어서 그 내용을 화면에 보여주는 간단한 php 코드다. 실행해보면 test.txt에 작성한 내용이 잘 출력되는 것을 볼 수 있다. 지금은 정상적인 값이 test.txt에 들어있지만, 보안적 관점에서 만약 이 test.txt에 보안적 위협이 되는 값이 저장돼 있으면 어떻게 될까? 예를들면 script 태그로 감싸져 있는 자바스크립트 코드 말이다. echo 명령어는 string 변수의 값을 html 코드로 변환해주는 역할을 한다. 그렇기에 script 태그로 감싸진 문자열이 string 변수 안에 들어있다면, html로 변환하는 과정에서 자바스크립트 코드로 인식이 되고 사용자한테 페이지를 보여줄 때 그 문자열이 실행될 것이다. 위에서 말한대로 test...
배열 php 역시 배열이 존재한다. php의 배열은 c, c++, c# 등의 언어와 다르게 다른 자료형의 값들도 한 배열 안에 넣을 수 잇는데, 이는 python과 비슷하다. 배열 선언 방식은 조금 특이하게 느껴졌는데, 선언 방식은 아래와 같다. $ = array(, ); 이 말고도 아래와 같은 방법도 가능하다. $[] = ; 이 방법의 경우 변수가 미리 선언되지 않아도 가능하다. (선언되어 있는 배열에 대해서 요소를 추가할 때도 가능하다.) array를 써준뒤 괄호안에 배열에 들어갈 요소를 넣어야지 배열을 만들 수 있다. 만들어진 배열에 요소를 추가할 때는 array_push(, );을 통해 넣을 수 있다. count()를 사용한다면 배열의 길이를 구할 수 있다. 이 밖에도 array_search, s..
조건문이란 특정 조건식이 참일 때 특정 코드를 실행해주는 문법을 말한다. 분기를 나눠준다고 생각하면 된다. php의 조건문은 다른 언어들과 비슷하게 if문과 switch문이 있다. if 문 php의 if문은 if, else if, else로 이뤄진다. 구조는 아래와 같다. if() { } else if() { } else { } 예시로 if, else if, else를 하나씩만 사용했는데 else if의 경우 여러 번 사용이 가능하다. else if, else는 단독으로 사용할 수 없고 무조건 위에 if문이 존재해야지만 사용이 가능하다. 필요하다면 조건에 &&(and), ||(or) 연산자를 사용할 수 있다. 아래는 조건문과 $_GET을 이용한 간단한 예시다. GET방식으로 받아오는 val의 값이 무엇이..
예선 8위, 본선 11위로 아쉽게 수상은 하지 못했다 ㅠ... 예선전 같은 경우 대회 끝나기 12시간 전까지는 top 5를 유지했지만 자고 일어나니 8등이 되어 있었다 ㅋㅋ.. 본선은 평소 자신 없던 heap 관련 문제가 나와서 포너블은 풀지 못했고, 웹에서 php의 strcmp 취약점 관련 문제를 풀어서 11등을 했다. 이번 대회는 음원차트 컨셉으로 진행됐는데, 홈페이지 ui도 그렇고 푼 사람 명단도 그렇고 정말 색다르고 재밌었던 대회 같았다. 작년 YISF 대회도 참여했었는데, 그때는 해킹 공부를 시작한 지 얼마 안 된 시점이라 거저 주는 문제를 제외하고는 한 문제도 못 푼 체 떨어졌었다. (벽이 느껴졌었다.) 하지만 아쉽게 수상을 하진 못했지만 이번 대회에서는 잠시나마 상위권에 들어보기도 하고 꽤 ..
GET 방식이란..? get, post 방식에 대한 설명은 다른 블로그 등에 잘 나와있으므로 자세히 하지는 않겠다. get 방식은 url을 통해 다른 페이지로 값을 전달하는 것을 말한다. get 방식으로 값을 전달할 경우 대상 페이지 url 맨뒤에 ?를 작성하고 키와 전달할 값을 넣는다. 여기서 키는 대상 페이지에서 전달된 값을 사용할 때 사용한다. 예) "https://dyp4r.php?id=admin" 위 예시 url은 dyp4r.php 페이지에 키 값은 'id'로 'admin'이라는 문자열 값을 전달하는 것이다. 해당 페이지에서는 키 값인 'id'로 'admin' 값을 사용할 수 있다. 만약 전달하고자 하는 값이 여러개라면 값들 사이를 &으로 구분지어서 전달할 수 있다. 예) "https://dyp..
-php 코드 작성- PHP 코드는 사이에 작성해야 한다. -출력- echo, print() 함수를 이용하면 어떤 문자나 문자열, 값, 변수 등을 화면에 출력할 수 있다. 정확히 말하면 화면에 출력한다기보다는 html 코드로 출력하는 것인데, 이때 출력할 값에 html 태그가 포함돼 있다면 해당 html 태그가 작동한다. 위 예제에서 . 기호는 문자열을 연결해주는 역할을 한다. 파이썬에서 문자열 사이에 + 기호가 있을 때의 작동을 생각하면 된다. 아래는 echo에 을 안 붙였을 때의 결과다. -자료형과 변수- 다른 언어들과 마찬가지로 int, float, string, boolean 등등의 자료형이 존재한다. 파이썬처럼 변수를 선언할 때 타입을 지정해줄 필요 없이 들어가는 값에 맞춰 자료형이 변한다. 변..
Misc - Welcome misc의 1pt 문제 Welcome이다. 단순히 디스코드에 접속하기만 해도 flag를 준다. flag{W3Lcom3_7o_CS4w_D1ScoRD} Pwn - Alien Math 리버싱이 조금 필요한 간단한 시스템 해킹 문제다. 실행해보면 퀴즈 같은걸 내고 사용자의 입력을 받은 후 점수를 출력해주는 것 같다. main 함수를 확인해보면 rand 함수를 통해 값을 생성하고, 그 값이 사용자가 입력한 값과 같으면, 그 다음 단계로 넘어가는 것 같다. 하지만 srand 함수로 시드를 설정해주지 않았기 때문에 rand 함수는 항상 같은 값을 생성하게 된다. gdb로 확인해보면 생성되는 값은 0x6b8b4567인 것을 알 수 있다. 구한 값을 입력해보면 다음 단계로 넘어가는 것을 볼 수..
Web - Basic (10 points) RTLxHA CTF 2021의 웹 카테고리의 Basic 문제다. 링크만 주어져 있다. 해당 링크로 들어가면 위 사진처럼 로그인 창이 뜨는데, 시험 삼아 sql injection을 이용한 인증 우회 공격을 시도해봤다. id : 1' or '1' = '1' -- pw : 1234 (
HackCTF의 RTC 문제다. 문제 명처럼 return to csu 기법을 사용해야한다. 덕분에 rtc 공격을 복습할 수 있는 좋은 경험이 됐다. 문제 파일로는 바이너리 파일과 libc가 주어진다. 바이너리를 실행해보면 "Hey, ROP! What's Up?"이라는 ROP에게 안부를 물어보는 문구가 출력되고 그 다음 줄에 입력을 받는다. 보호기법을 확인해보면 NX bit만 걸려있는 것을 볼 수 있다. full relro가 아니라 partial이기 때문에 got overwrite 기법도 사용 가능할 것이다. 일단 ida로 열어보겠다. 코드는 굉장히 간단하다. write 함수로 문구를 출력해준 뒤 read 함수로 0x200byte만큼 입력을 받는다. 딱봐도 overflow가 발생한다. 쉘을 얻게해주는 함수..