반응형

python 80

[HackTheBox] Templated - 웹해킹 / SSTI

SSTI 와 관련된 웹해킹 문제 SSTI란 Server Side Template Injection의 약자로 템플릿 엔진으로 웹 어플리케이션을 구동하는 경우, 공격자가 템플릿 구문을 악용하여 삽입할 수 있는 취약점이다. 이렇게 템플릿 구문이 삽입되게 되면, 원격 명령어 실행도 가능하게 되는 위험한 취약점이다. 문제 페이지에 접속하면 이런 화면이 나온다. 아직 완성되지 않은 웹 서버를 묘사해놓은것 같은데 Site still under construction 이라고 되어있고 아래쪽에 Proudly powered by Flask/Jinja2 라고 적혀있다. 이 부분이 아주 큰 힌트이다. 일단 공격 벡터를 찾기 위해 이것저것 시도해봤다. URL에 없는 경로를 입력할 경우 404 Error 페이지로 이동하게 되는데..

[HackTheBox] Emdee five for life - 웹해킹 / Requests / BeautifulSoup

이제부턴 HackTheBox 에서 제공하는 워게임 문제도 포스팅 해보려고 한다. 예전에 풀었던 문제들 Write Up이라 지금 접속하면 안보이는 문제들도 꽤 있다. 그중 가장 쉬운 문제였던 Emdee five for life 이다. Emdee five 라는 말을 처음봐서 이게 대체 뭔가 했는데 발음 그대로 읽으면 MD5 이다.. 문제도 MD5 해시 알고리즘과 관련된 내용이다. 문제 페이지에 접속했을때 화면이다. MD5 encrypt this string 이라는 문구가 나오고 바로 아래에는 알 수 없는 문자열이 나오는데, 단순하게 저 문자열에 대한 MD5 해시값을 입력창에 넣어 제출하는 것이 목표이다. 문자열을 MD5 해시로 만든 뒤, Submit 버튼을 눌렀더니 Too slow! 라는 문자열이 뜨면서 M..

[Root Me] Logs analysis - web attack - 포렌식 / 로그분석 / Python

Root Me 의 웹 서버 접근로그 포렌식 문제 문제 설명을 읽어보면 웹사이트가 공격을 당했는데, 자기들 회사의 system admin 웹 서버 로그를 볼 줄 몰라 도와달라고 한다. 목표는 어떤 데이터가 유출되었는지 찾아내는 것이다. 192.168.1.23 - - [18/Jun/2015:12:12:54 +0200] "GET /admin/?action=membres&order=QVNDLChzZWxlY3QgKGNhc2UgZmllbGQoY29uY2F0KHN1YnN0cmluZyhiaW4oYXNjaWkoc3Vic3RyaW5nKHBhc3N3b3JkLDEsMSkpKSwxLDEpLHN1YnN0cmluZyhiaW4oYXNjaWkoc3Vic3RyaW5nKHBhc3N3b3JkLDEsMSkpKSwyLDEpKSxjb25jYXQ..

워게임/Root Me 2022.09.15

[Root Me] ELF x86 - Stack buffer overflow basic 2 - 포너블 / 버퍼오버플로우

Root Me 의 두번째 포너블 문제 살짝 더 어려워진 버퍼오버플로우 문제이다. 아래쪽에 Environment configuration 을 보면 첫번째 문제와 다르게 NX (Non-Executable Stack) 과 Heap exec 가 설정되어 있는게 보이는데 이번 문제에서 딱히 의미있는 설정은 아닌것 같다. #include #include #include #include void shell() { setreuid(geteuid(), geteuid()); system("/bin/bash"); } void sup() { printf("Hey dude ! Waaaaazzaaaaaaaa ?!\n"); } void main() { int var; void (*func)()=sup; char buf[128]; ..

워게임/Root Me 2022.09.11

[CTFlearn] Simple Programming - 프로그래밍 / Python

CTFlearn의 열아홉번째 문제 이번엔 프로그래밍 문제이다. 해킹대회를 참가할때마다 느끼는 거지만 프로그래밍은 해킹하는데 필수로 잘해야 하는것 같다. 어려운 문제들은 반드시 코딩해서 풀어야 하기때문.. 프로그래밍 공부도 해야하는데 참 쉽지가 않다. 0의 개수가 3의 배수이거나 1의 개수가 2의 배수인 행의 개수를 찾는것 이것이 이번 문제의 목표이다. 말이 헷갈려서 몇번이나 읽어봤던거 같다. 문제에서 주어지는 data.dat 파일을 열어보면 이렇게 0과 1로 된 데이터들이 10000줄 들어있다. 사람이 일일이 계산하기는 불가능하기 때문에 프로그래밍이 필수이다. 여기서 각 line의 0과 1의 갯수를 센 후, 0의 개수가 3의 배수이거나 1의 개수가 2의 배수인 행를 세어주면 된다. f = open('da..

워게임/CTFlearn 2022.09.05

[Root Me] ELF x86 - Stack buffer overflow basic 1 - 포너블 / 버퍼오버플로우

Root Me 에서 처음 풀어보는 포너블 문제 가장 기본적인 스택 버퍼오버플로우 문제이다. 문제 환경을 살펴보면 아무런 보호기법도 적용되지 않은것이 보인다. 그냥 편하게 풀 수 있는 수준이다. #include #include #include #include int main() { int var; int check = 0x04030201; char buf[40]; fgets(buf,45,stdin); printf("\n[buf]: %s\n", buf); printf("[check] %p\n", check); if ((check != 0x04030201) && (check != 0xdeadbeef)) printf ("\nYou are on the right way!\n"); if (check == 0xdea..

워게임/Root Me 2022.09.03

[HouseplantCTF] thedanzman - 리버싱 / Python / ROT13 / Base64

마지막 Python 리버싱 문제. 문제 설명을 읽어보면, EZ, PZ, LEMON, SQUEEZY 문제보다 훨씬 어렵게 만들어서 플래그를 절대 획득하지 못할것이라고 한다. (EZ : https://hackingstudypad.tistory.com/167) (PZ : https://hackingstudypad.tistory.com/169) (LEMON : https://hackingstudypad.tistory.com/171) (SQUEEZY : https://hackingstudypad.tistory.com/172) 하지만 역시나 차근차근 계산하면 충분히 풀 수 있는 문제이다. 주어지는 문제파일은 pass4.py 파일이다. 패턴은 이전 문제와 똑같다. IDLE을 이용해 py 파일을 실행시켜 보니 Ente..

CTF/리버싱 2022.06.17

[HouseplantCTF] SQUEEZY - 리버싱 / Python / Base64 / XOR

계속해서 이어지는 python 리버싱 문제 Ok this time, you aren't getting anywhere near anything 자꾸 쉬운 문제만 내면서 멘트는 엄청난 각오를 다지고 있는게 귀엽다. 주어지는 문제파일은 pass3.py 파일이다. 먼저 IDLE을 이용해 py파일을 한번 실행시켜 봤다. 역시나 이번에도 패턴은 똑같다. Enter the password: 라는 문구가 나오고, 123을 입력해봤더니 Incorrect password! 라는 문구가 나오면서 저번처럼 약올리는듯한 멘트를 출력한다. import base64 def checkpass(): userinput = input("Enter the password: ") key = "meownyameownyameownyameown..

CTF/리버싱 2022.06.15

[HouseplantCTF] LEMON - 리버싱 / Python

계속해서 이어지는 쉬운 파이썬 리버싱 문제 똑같은 패턴이다. 조금 더 secure한걸 만들었다고 한다. 하지만 역시나 아주 쉽게 플래그를 얻을 수 있다. 주어지는 문제파일은 pass2.py 파일이다. 먼저 IDLE을 이용해 py파일을 한번 실행시켜 봤다. Enter the password: 라는 문구가 나오고, 123을 입력해봤더니 Incorrect password! 라는 문구가 나온다. 그리고 나서 저번처럼 약올리는듯한 멘트를 출력한다. def checkpass(): userinput = input("Enter the password: ") if userinput[0:4] == "rtcp": if userinput[10:13] == "tHi": if userinput[22:25] == "cuR": if..

CTF/리버싱 2022.06.14

[HouseplantCTF] PZ - 리버싱 / Python

어려운 Java 리버싱 문제를 풀고 난 후 다시 머리를 식혀주는 쉬운 문제 문제 제목부터 PZ (EZ-PZ) 이다. (EZ : https://hackingstudypad.tistory.com/167) 문제 설명을 읽어보면 EZ 문제보다 조금 더 잘 만든거 같다고 아마 플래그를 얻지 못할것이라고 한다. 하지만 아주 쉽게 얻을 수 있다. EZ문제도 그렇고 이 문제도 그렇고 리버싱 이라기보다 그냥 틀린그림찾기 정도가 아닐까 싶다. 이번에도 역시 pass1.py 파일이 주어진다. IDLE을 이용해 py파일을 실행시켜 보았다. Enter the password: 라는 문구가 나오고, 123을 입력해봤더니 Incorrect password! 라는 문구가 나온다. 그다음 뭔가 은근 기분나쁜 느낌의 노래같은걸 출력한다..

CTF/리버싱 2022.06.12
반응형