Yozzang의 해킹일기 💻
article thumbnail
Python Challenge (Level 18)
Wargame/Python Challenge 2022. 9. 17. 00:23

이번 포스트에서는 Python Challenge의 Level 18 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 문제의 제목을 보면 "can you tell the difference?"라고 되어있다. 해당 사진의 차이는 바로 밝기(brightness)이다. brightness.html로 접속하면 진짜 문제가 보인다. ### 공격문 : http://www.pythonchallenge.com/pc/return/brightness.html ### 실행 결과 : 개발자 도구를 확인해보면 다음과 같이 deltas.gz라는 파일이 존재하는 것을 확인할 수 있다. 해당 파일을 다운로드해서 분석해보면 되는 것으로 보인다. ## 문제 풀이 : gz파일을 압축해제하면 다음과 ..

article thumbnail
Python Challenge (Level 17)
Wargame/Python Challenge 2022. 9. 16. 00:19

이번 포스트에서는 Python Challenge의 Level 17 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 화면 좌측 하단에 보면 Level 4에 나왔던 사진이 다시 나온 것을 확인할 수 있다. Python Challenge (Level 4) 이번 포스트에서는 Python Challenge의 Level 4 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 사진이 한 장 달려 있다. 사진을 클릭하면 다음과 같은 화면이 jy05un.tistory.com Level 4에 들어가서 쿠키를 확인해보면 다음과 같이 파라미터를 busynothing을 쓰라고 한다. 파라미터만 busynothing으로 바꾼 다음에 레벨 4와 같은..

article thumbnail
Python Challenge (Level 16)
Wargame/Python Challenge 2022. 9. 15. 00:25

이번 포스트에서는 Python Challenge의 Level 16 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 중간에 핑크색 선이 여러개 들어가 있는 사진이 한 장 출력되어 있다. 단서는 해당 문제의 제목인 "let me get this straight"이다. 즉 정렬해달는 뜻인데, 우선 해당 사진을 다운로드하고 픽셀을 출력해보면 다음과 같이 중복된 숫자가 출력된 것을 알 수 있다. 195가 바로 사진 중간에 보이는 핑크색 선이다. 해당 픽셀만 따로 정렬해서 푸면 될 것으로 보인다. ## 문제 풀이 : 파이썬을 통해 핑크색 선만 따로 정렬해보겠다. ### 공격 코드 : from PIL import Image, ImageChops img = Image.open..

article thumbnail
Lena Tutorial (Level 16)
Wargame/Lena Tutorial 2022. 9. 14. 00:09

이번 포스트에서는 레나 튜토리얼의 Level 16 문제에 대해 다루겠다. 문제를 실행하면 다음과 같다. ## 문제 해석 : GIF 관련 프로그램이다. 프로그램 종료 시 나타났던 Nag 창을 없애면 되는 것으로 보인다. ## 문제 풀이 : Resource Hacker로 해당 파일을 열어보겠다. Resource Hacker를 통해 확인해본 결과, 우리가 지우고자 하는 Nag의 아이디가 100번인 것을 알 수 있다. 이를 16진수로 변환하면 64이다. 이어서 Ollydbg를 통해 해당 프로그램을 실행해보겠다. 방금 찾은 Nag의 16진수 값이 64이므로 해당 값을 사용하는 명령어를 찾아보겠다. Ollydbg의 Search for All commands 기능을 통해 push 64를 검색해본 결과, 위와 같이 총..

article thumbnail
Pwnable (18. asm)
Wargame/Pwnable 2022. 9. 13. 00:57

이번 포스트에서는 Pwnable의 asm 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include #include #include #include #include #define LENGTH 128 void sandbox(){ scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); if (ctx == NULL) { printf("seccomp error\n"); exit(0); } seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(open), 0); seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(read), 0); seccomp_rule_add..

article thumbnail
Lena Tutorial (Level 15)
Wargame/Lena Tutorial 2022. 9. 12. 00:32

이번 포스트에서는 레나 튜토리얼의 Level 15 문제에 대해 다루겠다. 문제를 실행하면 다음과 같다. ## 문제 해석 : 해당 프로그램을 실행하면 다음과 같이 2개의 Nag가 출력된다. 2개의 Nag를 제거하면 되는 것으로 보인다. ## 문제 풀이 : 먼저 Ollydbg를 통해 해당 파일을 열어보겠다. 해당 프로그램을 실행하여 Nag가 뜬 상태에서 정지하고 Call stack을 확인해보면 다음과 같다. JMP으로 시작하는 스택이 있다. 해당 스택을 자세히 확인해보겠다. 해당 위치에 BP를 걸고 실행한 다음에, ESP를 확인해보면 다음과 같다. ESP의 바로 윗부분에 CALL 명령어가 있다는 것을 알 수 있다. 해당 명령어는 윈도우를 출력하는 함수로 예상된다. 또한 더 위로 올라가면 JE 분기문이 존재한..

article thumbnail
Python Challenge (Level 15)
Wargame/Python Challenge 2022. 9. 11. 00:29

이번 포스트에서는 Python Challenge의 Level 15 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : 달력이 출력되어있다. 달력 우측 하단에 위치하는 오른쪽 달력을 보면 2월이라고 되어있는데, 29일까지 있다는 것을 알 수 있다. 즉 윤년인 것이다. 일단 1**6년 중 윤년이면서, 1월 1일이 목요일이면서 6으로 끝나는 해를 찾으면 될 것 같다. ## 문제 풀이 : 파이썬을 통해 1**6년 중 윤년을 구해보겠다. ### 공격 코드 : import calendar leap_years = list() for i in range(1006, 2000, 10): curr_year = i if(calendar.isleap(curr_year)): if(calen..

article thumbnail
Python Challenge (Level 14)
Wargame/Python Challenge 2022. 9. 10. 00:16

이번 포스트에서는 Python Challenge의 Level 14 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : italy라는 회오리빵 사진과 바코드처럼 보이는 사진 한장이 출력되어 있다. 개발자 도구를 확인해보니 아래와 같이 "100*100 = (100+99+99+98)"이라는 힌트가 있다. 100*100은 가로와 세로의 길이라고 생각할 수 있고, 100+99+99+98에서 총 4개의 수가 나와 있으므로 사각형이라고 생각할 수 있다. 즉 100(외부)에서 1(내부)로 크기를 줄이면서 생긴 회오리형태라고 볼 수 있다. ## 문제 풀이 : 이미지를 다운로드해서 크기를 출력해보겠다. ### 공격 코드 : from PIL import Image img = Image..

article thumbnail
Lord of SQLInjection (31. zombie)

이번 포스트에서는 Lord of SQLInjection의 zombie문제에 대해 다루겠다. 문제를 클릭하면 다음과 같이 쿼리와 php코드가 표시된 화면을 볼 수 있다. ## 문제 해석 : 해당 문제는 preg_match() 함수를 통해 rollup, join, ace, @를 필터링하고 있다는 것을 알 수 있다. 또한 pw값을 알아야 문제를 해결할 수 있는 것으로 보인다. ## 문제 풀이 : ace가 필터링 처리되어 replace() 함수를 사용하지 못한다. 따라서 다른 방식으로 접근해야 한다. DB의 information_schema에는 processlist이라는 테이블이 존재한다. 해당 테이블에는 현재 실행 중인 쿼리가 저장되어 있다. 따라서 이를 활용하면 문제를 쉽게 해결할 수 있다. ### 사용할..

article thumbnail
Python Challenge (Level 13)
Wargame/Python Challenge 2022. 9. 8. 00:20

이번 포스트에서는 Python Challenge의 Level 13 문제에 대해 다루겠다. 문제를 클릭하면 다음과 같은 페이지가 출력된다. ## 문제 해석 : evil한테 전화하라고 한다. 개발자도구를 확인해보니 다음과 같은 phonebook.php라는 페이지가 존재한다. 해당 페이지를 조사해보면 될 것 같다. ## 문제 풀이 : phonebook.php에 접속해보겠다. XML faultCode 105가 뜬 것을 확인할 수 있다. 이는 xml-rpc 프로토콜을 통해서 호출할 수 있다. 파이썬 코드를 통해 해당 페이지를호출해보겠다. ### 공격 코드 : import xmlrpc.client as xc url = "http://www.pythonchallenge.com/pc/phonebook.php" serv..