전체 글
-
BypassIF개인공부/드림핵 2025. 1. 1. 01:53
이 문제의 경우 알맞은 KEY 값을 입력하여 FLAG를 획득하는 문제이다. [문제 해결]1. 문제 서버 접속 KEY값을 입력하는 부분을 확인 가능하다. 어떤 방식으로 동작하는지 확인하기 위해 문제 파일 분석을 진행한다. 2. 문제 파일 분석코드의 경우 두가지의 중요 포인트로 나누어진다. 첫번째 중요 포인트인 필터링 부분이다. 분석할 시 아래와 같다.우선 소문자(a-z), ' ', 숫자(0~9)를 alphabet 변수에 리스트로 저장한다. 또한 command_list에 특정 명령들을 리스트로 저장한다 이 후 반복문과 조건문을 이용해 True값을 반환한다.이 조건문을 해석할 경우 만일 입력받은 cmd 즉 명령이 command_list에 존재하는 명령이거나 alphabet에 존재하지 않는 값일 경우 True..
-
what-is-my-ip개인공부/드림핵 2024. 12. 31. 23:00
이번 문제의 경우 /flag 경로에 있는 FLAG를 획득하는 문제이다. [문제 해결]1. 문제 파일 분석 이 코드에서 중요한 부분은 2가지로 나눌수 있다. 우선 1번 코드 분석은 아래와 같다.request.access.route[0]= 클라이언트의 IP 주소 리스트를 반환하며 HTTP 헤더에서 X-Forwarded-For 부분을 기반으로 생성= 여기서 X-Forwarded-For란 프록시, CDN 등을 통하여 클라이언트가 요청을 보낼 경우 해당 CDN, 프록시 IP가 아닌 원본 요청 IP를 보여준다. request.remote_addr = 요청을 보낸 클라이언트 IP 주소 그러므로 만일 X-Forwarded-For IP가 존재 할경우 해당 IP, 존재하지 않을 경우 클라이언트 IP를 user_ip 변수에..
-
Where-is-localhost개인공부/드림핵 2024. 12. 31. 00:46
이번 문제의 경우 localhost에 접속하여 FLAG를 획득하는 문제이다. [문제 해결]1. 문제 파일 분석 코드를 분석할 경우 이 문제의 키 부분은 빨간 박스를 친 두 곳이다. 우선 로컬 호스트의 주소는 127.0.0.1이다. 이 주소 형식은 IPv4로 알려져 있다. 하지만 여기서 문제가 있는데 첫번째 조건문에서 입력 받은 IP 주소 값의 버전이 4일 경우 "no.."를 출력하도록 되어 있다. 이를 해결하기 위해서는 IP 주소 체계의 또 다른 버전인 IPv6를 이용하면 된다고 생각하기 쉽지만 아래의 /localonly 경로에서의 조건문을 확인 할 시 FLAG가 리턴되는 조건은 주소가 로컬 호스트이며, 버전이 4이여야 한다는 것이다. 이를 우회 하기 위해 IPv6 주소체계로 IPv4를 표현하는 방식을..
-
Replace Trick!개인공부/드림핵 2024. 12. 25. 12:21
이번 문제의 경우 요청 값에 flag 문자열 입력을 통해 FLAG를 획득하는 문제이다. [문제 풀이]1. 문제 서버 접속서버 접속 시 아래와 같은 화면을 확인 가능하다. 여기서 제공되는 코드 확인 시 다음과 같은 부분을 확인 할 수 있다. 해당 내용을 분석하면 flag 인자 값으로 입력된 값이 만약 'flag'일시 해당 값을 ''으로 치환하고 해당 치환값이 만약 flag 일 시 FLAG 값을 리턴하라는 코드이다. 2. Exploit지난 워게임에서 사용했던 기법과 같이 문자열 다중 호출을 통해 replace를 우회하여 FLAG를 획득하였다.
-
abcdefg-who개인공부/드림핵 2024. 12. 23. 22:36
이번 문제의 경우 서버에 접속해서 문제 해결을 통해 FLAG를 획득하는 문제다. [문제 해결]1. 서버 접속웹해킹 문제와는 달리 이번 문제의 경우 SSH 접속을 통해 서버에 연결해야 한다. 서버 생성 후 생성된 호스트 주소 및 포트번호를 이용하여 SSH 연결을 진행한다. SSH 연결 시 CMD를 이용해도되고 Putty, Moba Xterm 같은 도구들을 이용해도 된다. 문제 페이지에서 제공된 id와 pw를 이용하여 로그인 시 위와 같은 화면을 확인 할 수 있다. 2. 분석우선 제공된 dream 계정에 대한 권한을 확인하자. id 명령어를 통해 확인 할 수 있다. 확인 결과, dream 계정의 경우 일반 계정으로 확인되었다. 해당 계정 외 다른 계정의 존재를 확인하기 위해 cat /etc/passwd ..
-
Grand Theft Auto개인공부/드림핵 2024. 12. 22. 00:51
이번 문제의 경우 자동차의 CAN과 통신해서 얻은 파일을 통해 어떤 자동차인지 알아내는 문제이다. [문제 풀이]1. 문제 파일 분석문제 파일을 다운로드 받아 제공되는 파일을 열어볼 경우 아래와 같은 내용을 확인 가능하다. 여기서 can0은 CAN 통신을 의미하고 7E0, 7E8의 경우 통신 인터페이스를 의미한다. 문제에서는 참고자료로 UDS 프로토콜에 대한 내용을 제공하고 있다. UDS란- 통합 진단 서비스- 표준 정의되어 있다(ISO-14229) 1. Reqeust Format SID(서비스 식별자) : - 1바이트의 길이의 16진수 코드- 0x00부터 0x3E까지의 값을 가질 수 있음- 서버(ECU)가 클라이언트/테스터가 요청한 서비스를 이해하는데 사용되며 필수 필드 SubFn(서브 기능) :- 서..
-
session개인공부/드림핵 2024. 12. 21. 23:14
이번 문제의 경우 admin 계정으로 로그인하여 FLAG를 획득하는 문제이다. 문제 파일을 다운로드 후 분석을 진행한다. [문제 풀이]1. 문제 파일 분석 해당 코드들을 통해 users 딕셔너리에 guest, user, 그리고 admin id에 대한 비밀번호가 지정되어 있는 것을 확인 할 수 있다. 또한 세션 id를 4바이트 난수로 생성 후 16진수로 변환하여 session_storage에 저장하는 것을 확인 가능하다. 하지만 아래를 확인하면 이상한 점을 찾을 수 있다. 바로 로그인 계정이 admin일 경우 1바이트 난수 생성 후 16진수로 변환하여 session_storage에 저장한다는 것이다. 1바이트는 8비트이다. 그렇기에 admin 계정의 session id 경우의 수는 256개이다.이정도 ..
-
Find The Lost Flag개인공부/드림핵 2024. 12. 21. 22:34
이번 문제의 경우 admin 계정에 로그인하면 FLAG를 획득 할 수 있는 문제이다. 언제나와 같이 문제파일을 다운로드해 문제를 분석해본다. [문제 풀이]1. 문제 파일 분석 상기 코드는 문제 코드의 일부분이다. 해석하자면 challege.db에 연결 후 admin 또는 guest라는 값이 존재할경우 무시, 존재하지 않을 경우 값을 Insert하는 db 명령이다. 문제 풀이의 핵심은 이 코드가 아닌 다른 부분에 있다. 입력받은 username과 password를 db 값과 비교해 참일 시 로그인 성공과 동시에 계정에 걸맞게 저장된 시크릿 값을 가져오는 코드이다. 해당 코드의 경우 SQL Injection 공격에 취약하다. password 부분에 대한 입력 값을 ' or true--로 넣게 될 시 해당 ..