Web - 실습


이번 문제는 CTF 대회에서 이미 풀어봤던 문제이다.처음 보는 SSTI 취약점이라서 해당 부분을 공부하고 진행하였는데 오랜 시간 붙잡아서 겨우 풀었던 기억이 있다.그 기억을 살려서 다시 풀어보자.우선 /source를 확인하라고 나와있다. 소스 코드를 확인하면 계산기가 구현되어 있는 것을 확인할 수 있었다. 소스코드에 나와있는 대로 계산기를 작동시키니 다음처럼 뜨는 것을 확인할 수 있었다. SSTI 구문 중 가장 간단한 {{7*7}}을 통해 동작되는 부분을 찾으려고 하였으나 실패하였다.다른 템플릿으로 구현이 된 건가 하여 다른 구문으로 시도해 봤지만 실패하였다. 그래서 해당 문제를 피들러를 통해 확인해 보았다.그랬더니 쿠키 값으로 UserName=guest를 넘겨주고 있는 것을 확인할 수 있었다.gu..


초기화면을 보면 /source를 확인하라고 나와있다. 소스 코드를 확인해 보면 앞에서 풀었던 forcelogin1 문제와 매우 유사하다는 느낌을 받을 수 있다.대신 이번 문제는 mysql이 아닌 mssql이라고 한다.또한, 앞에서 풀었던 문제와 다르게 해당 문제에는 쿼리 구문에 table이 추가된 것을 확인할 수 있다.해당 문제는 id의 값으로 admin을 받으면 flag를 얻을 수 있는 문제라는 것까지 알 수 있다. 가장 먼저 로그인 기능을 확인하기 위해 guest 계정으로 로그인해 보았다.admin이 아니라서 권한이 없다고 뜬다. 이를 통해서 admin으로 로그인을 하면 flag 값을 얻을 수 있다는 것을 알 수 있었다. 이 문제 풀때 table Injection이라는 힌트를 받았다.tabel ..


초기화면을 보면 /source를 확인하라고 나와있다. /source를 통해 들어가니 소스 코드를 확인할 수 있었고, 밑줄 친 부분을 보면 select와 \ 등을 비롯해서 다양한 문자와 기호들을 사용할 수 없게 되어있다.또한 그 아래를 보면 50자로 제한이 되어있는 것도 확인할 수 있다. 소스 코드를 쭉 살펴보니 해당 부분이 제일 중요할 거 같았다. 소스코드에 /flag가 있길래 그냥 넣어보았지만 당연히 안된다./loginAction을 통해 flag의 값을 얻을 수 있는 문제 같았다. 소스 코드에서 guest의 아이디와 비밀번호를 알 수 있길래 바로 넣어보았다.권한이 없다고 뜨면서 admin으로 로그인해야 flag 값을 볼 수 있다는 것을 알 수 있었다. sql 인젝션에서 select가 막혀..


초기 화면에 있는 문장을 읽어보면 /source를 확인해 보라고 한다. 그래서 url에 /source를 넣어서 소스 코드를 확인해 주었다.코드들을 쭉 보다 보니 전에 풀었던 pingservice와 매우 유사한 문제 같았다. pingservice와 동일하게 가장 중요한 부분인 /execute를 확인해 보았다.매우 똑같지만 이번에는 ip가 아닌 cmd를 이용하는 문제였다.그래서 동일한 방식으로 접근해 보기로 했다. 가장 먼저 ls 명령어를 이용하여 디텍토리에 flag가 있는지 확인하려고 하였으나 아무것도 보이지 않았다...현재 디렉토리에는 아무것도 없다는 뜻이므로 루트 디렉토리에 있는 파일 목록들을 출력해 보기로 하였다. 루트 디렉토리를 확인해보니 flag가 있는 것을 확인하였다.그래서 간단하게 ca..


초기화면을 보면 /source를 확인하라고 나와있다. /source로 이동하니 소스 코드들을 확인할 수 있었다.해당 소스에서 os 명령어를 사용한다는 것을 확인할 수 있었으며, os라는 단어를 검색하여 쭉 확인하다보니 os 명령어를 실행할 수 있는 부분이 /execute라는 것도 알아낼 수 있었다. /execute 부분을 확인해 보니 url에 넣으면 cd 명령어를 통해 /app/mypinguser/"+directory+" 로 이동한 다음 ping -c 2가 실행된다. 또한, 뒤에 있는 ip_에 ip의 값이 들어간다는 것도 알 수 있었다.그래서 바로 /execute를 이용하여 localhost:5006의 ip 주소인 127.0.0.1을 넣어보았다. 그랬더니 아무것도 뜨지 않았다. 무엇이 문제일..


Hello CTF에 들어가면 다음과 같은 화면이 나온다.글을 읽어보면 /source를 확인해 보라고 적혀있다. 그래서 url에 /source를 추가해 보았다.그랬더니 다음과 같이 코드들이 나오고 한 줄 한 줄 읽어보니 /flag를 통해 플래그 값을 얻을 수 있는 거 같았다. url에 /source가 아닌 /flag를 넣어주니 위 사진처럼 플래그 값이 나오는 것을 확인할 수 있었다.seKUCTF{@@seKUCTF_ST@RTs_r1GHT_n0w!!@@} 이 문제를 풀면서 느낀 점 : 문제를 잘 읽자... 제발 잘 읽자... 아무거나 넣어보지 말고...


가장 먼저 소스코드를 확인할 수 있지 않을까 해서 url에 /source를 넣어보았지만 볼 수 없었다. 피들러들 켜서 패킷을 잡고 응답창에 raw를 자세히 보니 uvicorn이라는 처음 보는 단어가 있었다.바로 구글링을 해보았다. uvicorn 구글링 결과) uvicorn은 비동기 웹 어플리케이션을 실행하기 위한 고성능 서버이다. 이는 FastAPI와 같은 비동기 프레임워크와 함께 사용하기에 적합하며, 일반적이라고 한다.그렇다면 FastAPI는 무엇인지 구글링 해보았다. 결과) FastAPI는 파이썬 3.6+에서 작동하는 웹 프레임워크이다. FastAPI의 장점 중 하나는 문서 자동화로 코드를 작성하면 자동으로 대화형 API문서를 제작해 준다고 한다. -> docs(대화형 API문서)와 redoc(대..