Wargame
-
[LOB] goblin > orcWargame/Lord of Buffer Overflow 2021. 5. 24. 17:09
[LOB] goblin > orc 먼저 소스코드를 보며 분석해보자. 우선 이 부분에서 환경변수를 0으로 초기화시키기 때문에 쉘 코드를 환경변수에 넣어서 쉘을 실행시키는 것이 불가능하다. 하지만 buffer가 40byte로 쉘 코드가 들어가기 충분하기 때문에 이곳에 쉘 코드를 넣어 실행시키면 될 것 같다. 마지막으로 이부분에서 인자의 48번째 자리가 '\xbf'가 아니면 종료시켜버리기 때문에 인자의 48번째 자리를 신경 써야 한다. 위의 두 부분만 신경 쓰면 쉽게 풀 수 있을 것 같다. 먼저 orc파일을 복사한 후 Segmentation fault (core dumped)를 일으켜 core 파일을 분석해보자. 현재 스택이 아래와 같은데 buffer [40byte] | sfp [4byte] | ret [4b..
-
[LOB] cobolt > goblinWargame/Lord of Buffer Overflow 2021. 5. 22. 21:54
[LOB] cobolt > goblin 소스코드를 보니 이번에는 gets() 함수에서 취약점이 터지는데 gets() 함수도 strcpy()와 마찬가지로 문자열 길이 검사를 하지 않아 Buffer Overflow가 일어난다. 이번 문제도 쉘 코드를 아래와 같이 사용하면 될 것 같다. buffer [16byte] | sfp [4byte] | ret [4byte] | shell code 이전 문제들을 풀다 보니 자꾸 메모리 주소가 바뀌는 것 같아 segmentation fault (core dumped)를 일으켜서 처음부터 core 파일로 분석했다. 이런 식으로 ret위치가 0xbffffb10 인 것을 알 수 있었다. 그럼 이제 공격해보자. 이번에는 메인 함수의 매개변수가 아니라 gets()로 받기 때문에 (..
-
[LOB] gremlin > coboltWargame/Lord of Buffer Overflow 2021. 5. 22. 20:54
[LOB] gremlin > cobolt 우선 cobolt.c 코드를 보면 저번 문제와 동일하게 strcpy() 함수에서 취약점이 있는 것을 알 수 있다. 하지만 이번 문제에서는 buffer의 크기가 16byte이기 때문에 buffer에 쉘 코드를 넣을 수 없다. 그렇기 때문에 쉘 코드를 아래와 같이 사용해야한다. buffer [16byte] | sfp [4byte] | ret [4byte] | shell code 이런 식으로 쉘 코드를 ret 뒷 공간에 넣고 ret에 쉘 코드 주소를 넣으면 쉘이 실행된다. 그럼 쉘 코드가 들어갈 주소를 찾아보자. 스택에 buffer 크기만큼 16byte의 공간이 생긴 것을 확인했다. 취약점이 터지는 strcpy 부분에 break를 걸고 ret 위치를 확인했다. ret는..
-
[LOB] gate > gremlinWargame/Lord of Buffer Overflow 2021. 5. 22. 17:35
[LOB] gate > gremlin 주어진 c코드를 보면 strcpy(buffer, argv[1])로 argv[1]을 buffer로 복사하는데 이 과정에서 strcpy() 함수가 복사하는 문자열 길이 검사를 하지않아 Buffer Overflow 취약점이 발생한다. buffer에 쉘 코드를 넣고 ret를 쉘 코드 주소로 변조시켜 공격하면 될 것 같다. gdb로 buffer의 위치를 구해보자. 권한 문제로 복사해서 진행 intel 문법으로 바꾸어 확인하였다. 해당 부분을 보면 buffer의 크기만큼 256byte의 공간이 스택에 생긴 것을 확인할 수 있다. buffer [256] | sfp [4] | ret [4] buffer의 위치는 0xbffff908이다. 이제 쉘 코드를 넣고 ret에 0xbffff9..
-
[HackCTF : Forensics] Secret Document (150p)Wargame/HackCTF 2021. 5. 18. 15:51
[HackCTF : Forensics] Secret Document (150p) 파일을 받아 열어보면 아래와 같이 3개의 txt 파일이 있다. hint1.txt, hint2.txt는 암호 없이 열리는데 flag.txt만 암호가 필요하다. HxD로 열어보자 사진과 같이 Flag.txt - Central Directory의 bit flag 를 보면 다른 txt 파일과 다르게 09 08로 암호화된 것을 볼 수 있다. 해당 부분을 다 00 00 으로 바꾸면 암호 없이 파일을 볼 수 있을 것 같다. 수정하고 flag.txt을 열어보니 아래와 같이 플래그를 얻을 수 있었다. HackCTF{N0n3_9@$$w0rd}