목록War Game (174)
tmxklab
1. 문제확인 chall2.exe를 실행하면 Input값을 입력할 수 있고 틀리면 종료되는 것 같다. main문을 확인해보면 sub_140001000()에서 검증을 한다. for문이 0x12번 돌면서 aC배열과 입력 값을 1byte씩 비교하여 틀린 경우 0을 맞는 경우 1을 return한다. 2. 접근방법 aC배열을 확인해보자 3. 문제풀이 저 위에 아스키 코드를 합치면 "Comp4re_the_arr4y"인데 이게 플래그 값이다.
1. 문제확인 특정 Host에 ping을 보내는 서비스이며 Command Injection을 통해 플래그를 획득할 수 있다. 2. 접근방법 subprocess를 이용하여 /bin/sh -c ping -c 3 "{host}"명령을 수행할 수 있으며 host에는 내가 입력한 값이 들어간다. 또한, try문에서 에러가 발생하면 exception처리가 된다. Host입력 란에 쉘 명령어를 쓰려고 하자 필터링이 된다. 개발자 도구[F12]에서 html을 확인한 결과 input에 pattern을 통해 필터링이 되는 것 같다. 3. 문제풀이 html은 수정할 수 있으므로 필터링되는 부분을 제거해주고 /bin/sh -c ping -c 3 "host" 여기서 host부분에 쉘 명령어를 입력해주자(참고로, 에러가 발생하면..
1. 문제확인 host와 port값을 지정하고 Data를 보낼 수 있는 것 같다. 위와 같이 입력 값을 구성하고 Send 버튼을 누르면 다음과 같이 출력된다. 이제 소스코드를 확인해보자 /admin으로 POST형식으로 접속하면 admin()가 호출되고 if문을 통과하면 FLAG값을 리턴해준다. 2. 접근방법 처음에는 BurpSuite를 통해서 직접 url에 admin과 헤더 값 등을 변경하였는데 첫 번째 if문에서 막혔다.. 그래서 생각한 것은 처음 /socket에서 입력받는 코드 부분을 살펴보았다. host, port, data를 입력하면 소켓 통신을 통해 연결되고 입력한 data값을 보내준다. 따라서, /socket에 있는 입력 폼을 이용하여 웹 서버의 host주소와 port번호를 넘겨주면 다시 웹 ..
1. 문제확인 접속해서 userid에 guest에 대해 View버튼을 누르면 위와 같이 key-value형태로 나온다. 문제 정보에서는 Path Traversal 취약점을 이용하여 /api/flag에 있는 플래그를 획득할 수 있다고 나온다. 2. 접근방법 이번에도 마찬가지로 문제 파일을 다운로드하여 코드를 확인해보자 먼저 FLAG변수에 flag값이 담긴다. get_info()에서는 request의 method형식에("GET", "POST") 따라 다르게 처리되는데 POST형식인 경우 '{API_HOST}/api/user/{userid}'형식으로 요청을 보낸다. 마지막으로 밑에 빨간색 박스를 보면 '/api/flag' 형식의 요청이 들어온경우 flag()를 호출하여 우리가 원하는 flag값을 return한..
1. 문제확인 쿠키로 인증 상태를 관리하며, admin 계정을 접속해야 플래그를 획득할 수 있다. 2. 접근방법 먼저, 문제 파일을 다운로드하여 코드를 확인해보자 맨 위 빨간색 박스를 살펴보면 ./flag.txt를 읽어들인 다음 'admin'에 대한 비밀번호를 저장한다. 'guest'유저는 비밀번호가 그대로 'guest'이다. 그리고 아래 빨간색 박스를 살펴보면 'username'에 대한 cookie값을 가져와서 username이 존재하면 index.html에 'guest' 또는 'admin'에 따라 다르게 표시되는 것을 확인할 수 있다. 특히 if문에서는 username이 'admin'이면 플래그 값을 보여준다. 3. 문제풀이 먼저, guest유저로 접속해보자(id = 'guest', pw = 'gue..
1. 문제확인 ascii_easy@pwnable:~$ ls -l total 1700 -r-xr-sr-x 1 root ascii_easy_pwn 7624 Nov 3 2017 ascii_easy -rw-r--r-- 1 root root 1041 Nov 3 2017 ascii_easy.c -r--r----- 1 root ascii_easy_pwn 52 Aug 6 2014 flag -r--r----- 1 root ascii_easy_pwn 141 Oct 27 2016 intended_solution.txt -rwxr--r-- 1 root root 1717736 Oct 27 2016 libc-2.15.so ascii_easy@pwnable:~$ 1) mitigation 확인 2) 문제 확인 3) 코드흐름 확인 3..
1. 문제 확인 otp@pwnable:~$ ls -l total 20 -r--r----- 1 otp_pwn root 65 Jun 14 2014 flag -r-sr-x--- 1 otp_pwn otp 9052 Jun 14 2014 otp -rw-r--r-- 1 root root 820 Jun 14 2014 otp.c 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) otp.c #include #include #include #include int main(int argc, char* argv[]){ char fname[128]; unsigned long long otp[2]; if(argc!=2){ printf("usage : ./otp [passcode]\n"); return 0..
1. 문제확인 1) mitigation 확인 statically linked 2) 문제 확인 입력 값을 받고 hash값을 출력해주는 것 같다. 3) 코드흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int dec_val; // [esp+18h] [ebp-28h] char enc_val; // [esp+1Eh] [ebp-22h] unsigned int len; // [esp+3Ch] [ebp-4h] memset(&enc_val, 0, 0x1Eu); setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 1, 0); printf("Authenticate : "); _isoc99_s..
1. 문제 군생활...ㅋㅋㅋㅋㅋ 1) 문제확인 확인 버튼을 누르거나 창을 닫으려고 하면 계속 메시지 박스 안에 있는 숫자가 1부터 시작해서 1씩 올라가게 된다. 2. 접근방법 UPX로 패킹되어 있으며 Autoit스크립트로 만들어져 있다. 언패킹 3. 문제풀이 1부터 790까지 반복됨으로 790의 MD5 해쉬 값을 구해서 제출하면 된다.
1. 문제 1) 문제확인 1234를 입력하고 "OK"버튼을 누르면 오른쪽 그림과 같이 나오게 된다. 2. 접근방법 VB로 만들어진 파일 3. 문제풀이 눈에 띄는 문자열은 존재하지 않지만 문자열을 비교하는데 사용되는 함수 발견 sub_401D8C()에서 __vbaStrCmp()가 사용된다. 입력 값을 "test"로 주었을 때 __vbaStrCmp()의 인자로 입력한 값과 "677345"가 들어간다. 이후에 이를 통해 분기하므로 다시 "677345"를 입력하고 확인해보자 "677345"를 입력하고 분기하게 되면 위 그림과 같이 나오게 된다. 따라서 Serial값은 "677345"