정보보안 97

[LOB] Level1 (Gate->Gremlin)

gremlin.c를 보면 취약점이 있다는 strcpy를 사용하였다. 입력받는 문자열의 길이를 알 수 없으니 bufferoverflow문제가 생길 수 있다. gdb를 이용하면 어셈블리어로 출력할 수 있다. [명령어] r : 재시작 ni : 다음줄 재생 x/10x $esp : esp에서 10개 메모리 출력 위 사진보면 A 4개가 0xbffffa58~ 출력되는 모습이다. 다음과 같이 256byte 크기의 buffer에 4byte 크기의 ebp만큼 dummy데이터를 넣고 ret address에 1. shellcode를 환경변수로 설정하고 해당 주소를 출력한다. 2. 256byte안에 shellcode를 넣어놓고 ret address가 이를 가리키게 한다. 두가지 방법으로 flag를 얻을 수 있다. export ..

정보보안/LOB 2022.07.14

Easy Keygen[Reversing.Kr]

다음과 같은 keygen이 있다. Serial을 다음과 같은 결과를 내는 ID를 찾아라가 문제인데 keygen을 만드는 이 부분을 따라가 보면 글자와 10,20,30,10,20,30 순서대로 xor 연산을 하는것을 확인할 수 있어 그와 같은 방식을 브루트포스로 풀어보았다. 고찰 : 당연히 10,20,30,40,50 순서 일줄 알고 했는데 계속 틀린 값이 나와 다시 확인해보고 결과를 얻을 수 있었다.

pwntool 사용법

systemhacking 부분 공부하면서 pwntool을 쓰게 되는데 사용법을 계속 검색하게 되어 한번에 정리 해놓으려한다. p = remote("example.io", 1234) p = process("./example") p = ssh(USERNAME, IP, PORT, PASSWORD) 1 ip, int 로 연결 2 string 형태 3 username, ip , port , password 형태로 연결 recv(n) recvuntil("example") recvline() 1 표준 출력에서 n 만큼 읽어서 반환 2 표준 출력에서 "example" 문자열까지 읽고 반환 3 표준 출력에서 한줄 읽어 반환 send("example") sendline("example") interactive() 1 표준..

[Wargame]basic_exploitation_000,001(system)

문제는 다음과 같다 basic_exploitation_000 익스플로잇해서 쉘을 실행한후 flag를 읽으면 된다. 문제파일을 받아보면 buf의 주소를 알려주고 scanf를 하는것으로 버퍼오버플로우 공격을 시행하라는 것이다. pwntool을 이용하여 쉘코드를 버퍼의 맨위에 놓고 나머지를 아무문자로 채워넣는다 쉘코드(26자) + 106자 = 버퍼크기(128) + 스택포인터(4) 그 다음 return address에 쉘코드가 들어갈 명령어의 주소를 보내며 실행한다. basic_exploitation_001 위와 같은 방향의 문제이다. read_flag라는 함수가 이미 만들어져 있어 이를 실행하면 되는 것 같다. pwndbg로 read_flag함수의 주소를 알아내어 같은 버퍼오버플로우 코드를 실행했다.

[Wargame]XSS(web)

예전에 풀어봤던 XSS를 복습삼아 다시 풀어봤다. Flag값을 알아내는 문제이다. 다음과 같은 페이지가 있고 vuln page는 XSS공격에 취약함을 alert(1);을통해 보여주고 있다. 코드를 보면 check_xss에서 쿠키값에 FLAG값을 넣어서 보내주고 있으므로 쿠키값을 알아내는 문제라고 볼 수 있다. 그리하여 location.href : url 업데이트 코드를 입력하면 다음과같이 flag값이 나온다.

13 [Basic RCE]

정답 문자열을 구하는 문제인것 같다. 이런식이 었다. 이번에 처음 안 사실인건데 .net(C#) 으로 구성된 프로젝트는 디버깅을 할 수가 없다. C#으로 빌드하면 중간에 코드가 만들어져 JIT컴파일러에 의해 컴파일되고 운영체제가 바로 실행한 수 있는 코드로 변환된것이다. 이런 방식을 Intermidiate Language 방식 이라한다. 따라서 dotPeek 이라는 툴을 이용하면 코드를 확인할 수 있다. 그리고 str을 출력해보면