개인공부
-
amocafe개인공부/드림핵 2025. 2. 12. 23:27
문제설명소스코드풀이 이번 문제의 경우 비트 연산을 통해 나온 결과 값을 다시 초기 상태로 되돌려 해당 값 입력을 통해 FLAG를 획득하는 문제이다. 소스코드 수행으로 생성된 문자열은 사진에서 볼수 있듯이 1_c_3_c_0__ff_3e 이다. 소스코드 부분에 주석을 통해 코드를 설명한 상태이지만 다시한번 설명하면 아래와 같다. 코드 설명 초기 값을 세팅하는 단계이다. org 값에 대한 연산이 수행되어 이를 현재의 결과 값인 1_c_3_c_0__ff_3e 이 출력되게 하는 단계이다. org의 값이 82라 하자.이를 2진수로 변환할시 01010010이된다. i = 0 일때, 0만큼 쉬프트 연산이 수행되기에 0101 0010에 대해 우측 쉬프트를 할 시 그 값은 0101 0010이다.( >> X : X의 값 ..
-
random-test개인공부/드림핵 2025. 1. 18. 00:29
이번 문제의 경우 알파벳 소문자 혹은 숫자를 포함하는 4자리 랜덤 문자열 및 100 이상 200 이하의 랜덤 정수 비밀번호, 즉 두 값을 맞게 입력하여 FLAG를 획득하는 문제이다. [문제 해결]1. 서버 접속접속 시 사물함 번호, 자물쇠 비밀번호 두 값을 입력해야 하는 것을 알 수 있다. 이때 랜덤 값 두개를 입력 후 확인 시 아래와 같은 결과를 확인 할 수 있다. 문제 파일을 분석해본다. 2. 문제 파일 분석 1번 - locker_num 및 password 파라미터에 입력된 값을 locker_num, password 변수에 저장한다 2번- 조건문으로 조건 충족 여부를 확인한다- 조건은 다음과 같다:1. locker_num 변수가 빈 값이고2. rand_str 배열에 랜덤하게 생성되어 대입된 값과 ..
-
Type c-j개인공부/드림핵 2025. 1. 4. 01:26
이번 문제의 경우 알맞은 id와 pw를 입력하여 FLAG를 획득하는 문제이다. [문제 해결]1. 서버 접속 접속 시 ID와 PW를 입력하는 부분을 확인 가능하다. 제출 버튼을 클릭 시 POST 요청을 통해 /check.php 파일이 동작하는 것을 확인 할 수 있다. 코드 확인을 위해 문제 파일을 다운로드 후 분석을 진행한다. 2. 코드 분석코드를 확인 시 중요 부분은 2가지로 확인된다. $characters에 저장되어 있는 0~9, a~z, A~Z 문자열을 랜덤 함수를 통해 랜덤하게 총 10자리까지 $randomstring에 저장한다. 위 그림의 빨간 박스를 확인 시 생성된 id 및 pw를 입력된 값과 비교하는 코드를 확인 할 수 있다. 이때 주목해야 할 부분은 입력 받은 id(input_id)와 ..
-
baby-union개인공부/드림핵 2025. 1. 2. 00:20
이번 문제의 경우 Union Based SQL Injection 공격을 통해 FLAG를 획득하는 문제이다. [문제 해결]1. 문제 서버 접속 윗 부분에 로그인 시 어떠한 쿼리를 이용하는지에 대한 쿼리문이 적혀 있다. 이를 참고하여 SQL Injection 공격을 시도해본다. 로그인 검증을 우회하는 SQL Injection 구문을 사용하였고 그 결과 현재 db에 저장되어 있는 모든 user들의 id가 노출된 것을 확인 하였다. 이 공격을 통해 알 수 있는 사실은 해당 웹페이지가 SQLI 공격에 취약하다는 사실이다. 2. Union Based SQLI(컬럼 수 확인)Union Based SQLI 공격에서 가장 중요한 점 중 하나는 컬럼의 수와 데이터 타입을 일치시켜야 한다는 것이다. 만일 일치하지 않는 다..
-
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를 획득하였다.