분류 전체보기
-
[pwnable.kr] Level 3 - bofWargame/pwnable.kr 2023. 1. 7. 08:00
Level 3 - bof를 풀어보자. 문제를 살펴보면 이름처럼 buffer overflow에 대한 문제이다. 우선 위의 두 가지를 다운로드 받고, 천천히 살펴보도록 하자. Kali에 접속해 wget 명령어를 사용해 두 파일을 다운로드했다. 먼저 프로그램의 소스 코드를 살펴보도록 하자. 선언한 func 함수의 key 값을 이용해 문제를 푸는데, 입력으로 gets 함수를 사용하고 있다. 그래서 overflow 문제인 것 같다. 문제를 푸는 방향은 앞에서 많이 해봤던 것들과 비슷하다. func 함수의 인자로 들어가는 0xdeadbeef를 0xcafebabe로 바꿔주면 된다. 이제 필요한 정보는 key의 위치이다. 위치를 알기 위해 gdb를 이용해 분석을 시작해보자. func 함수 부분 중 을 보면, 두 번째 ..
-
[pwnable.kr] Level 2 - colWargame/pwnable.kr 2023. 1. 6. 04:24
Level 2 - col을 풀어보자. 문제를 보면 MD5 해시 충돌에 대해 말하고 있다. 암호학은 아닐 것 같긴 한데, 접속을 해보도록 하자. putty를 이용해 col에 접속을 하고 파일을 확인하였다. col 실행 파일과 col.c 소스 코드 파일이 있는 것을 볼 수 있다. 그런데 putty를 이용하니, 조금만 입력을 하지 않고 시간이 지나면 접속이 끊긴다. 어쩔 수 없이 kali를 켜서 ssh 접속을 하였다. 소스 코드를 확인해보면 hashcode가 있고, check_password 함수가 선언되어 있다. 입력 문자 p에 대해 int 형으로 형 변환을 한 후 res에 5번을 반복하여 그 값을 더해주고 있다. 그리고 인자로 입력하는 argv[1]의 값이 hashcode와 같으면 문제가 해결되는 구조이다..
-
[pwnable.kr] Level 1 - fdWargame/pwnable.kr 2023. 1. 6. 04:04
L.O.S와 Webhacking.kr을 풀면서 모두 막혔다.. 더 이상 진행은 못하고 있고, 추가 공부를 한 후 진행을 해야겠다. 그래도 쉴 수는 없으니, 오랜만에 시스템 해킹 문제를 풀어보도록 하자. 이제부터 pwnable.kr을 시작하도록 하겠다. (L.O.S와 Webhacking.kr을 풀기 위해 계속해서 공부는 하고 있다.) pwnable.kr의 메인 화면으로 난이도마다 많은 문제가 있는 것을 볼 수 있다. (아래에도 더 많이 있다.) 먼저 Level 1 - fd를 풀어보자. 문제를 보면 리눅스에서 file descriptor가 뭔지를 묻고 있다. ssh로 접속을 해보라고 하니, putty를 이용해 접속을 해보도록 하자. 어떤 파일이 있는지 확인을 하였는데, fd라는 실행 파일과 fd.c라는 소스..
-
[정리] 22.12.../정리 2023. 1. 5. 22:40
블로그에 작성한 글을 토대로 22년 12월, 한 달 동안 공부한 내용을 정리해보자. [Wargame] L.O.S : Level 6 ~ Level 28 Webhacking.kr : Challenge 2 ~ Challenge 3 [Certification] 정보보안기사 : 합격 [Programming] Python : zip 함수 정리 *블로그에 없는 개인 공부* Python : Programmers Level 1 - 23 문제 C : solved.ac 티어 - 브론즈 46 문제 SQL : Programmers Level 1 ~ Level 5(완) PortSwigger LAB 시작 이번 달은 바쁘게 산 것 같은데, 이렇게 정리를 하고 보니 생각보다 공부를 별로 안했다.. 이제 한 해가 지나갔다고 생각하니, ..
-
[L.O.S] Level 31 - zombieWargame/L.O.S 2023. 1. 4. 04:44
Level 31 - zombie를 풀어보자. 앞의 문제와 비슷하지만, 좀 더 쉽게 풀 수 있었다. 이번 문제도 pw를 입력하면서 입력한 쿼리를 불러와야 한다. 그런데 'ace' 문자가 필터링되고 있다. 즉, 앞의 문제를 풀 때 이용하였던 place 함수를 사용하지 못한다. 소스 코드를 보면 알지만, 그래도 앞의 문제와 같은 유형인지 확인하기 위해 union select를 입력하였다. 예상했던 결과가 나오는 것을 볼 수 있다. 이 문제는 어떻게 풀 수 있을까?? sql의 다양한 정보를 모아둔 DB인 information_schema에서 processlist를 이용하여 문제를 풀어보자. 이 processlist는 테이블을 조회하여 현재 수행 중인 작업을 볼 수 있는 테이블이다. 쉬운 이해를 위해 조회를 실행..
-
[L.O.S] Level 30 - ouroborosWargame/L.O.S 2023. 1. 2. 03:31
Level 30 - ouroboros를 풀어보자. 문제 풀이의 방향은 잡았지만, 그 방법을 몰라 오래 걸렸고 결국 다른 write-up을 참고한 문제이다. 소스 코드를 보면 pw의 값을 찾는 간단한 문제이다. 필터링은 rollup과 join이 되고 있는데, 크게 신경을 쓰지 않아도 될 것 같다. pw에 항상 참 값을 입력해도 출력되는 것이 없다. 아마도 테이블에 값이 없는 듯 한데, union select를 이용해 확인해보도록 하자. 아래의 사진처럼 union select 1을 입력하였을 때, Pw : 1이 출력되는 것을 볼 수 있다. 그런데 과연 이 문제를 어떻게 해결해야 하는 것일까?? 문제의 테이블에 값이 없는데, 입력한 pw와 result의 pw가 같아야 문제가 해결된다. 아마 내가 입력한 값이 ..
-
[L.O.S] Level 29 - phantomWargame/L.O.S 2023. 1. 1. 07:25
Level 29 - phantom을 풀어보자. SQL의 서브쿼리에 대한 개념이 있어야 풀 수 있는 문제이다. 문제 페이지를 보면, 다른 문제들과는 달리 입력 쿼리가 보이지 않는다. 그 대신 표가 출력이 되어 있다. 소스 코드가 꽤 긴데, joinmail을 파라미터로 입력해야 한다는 것을 알 수 있다. duplicate가 필터링 되고, insert into를 통해 테이블에 값이 들어 가는데 0과 접속 주소, joinmail이 입력된다. 우선 아무거나 입력을 해서 어떤 변화가 생기는지를 확인해보자. joinmail 파라미터에 127.0.0.1을 입력해보았다. 그랬더니 insert into의 쿼리가 출력되고, 접속 ip와 입력한 값이 표에 추가로 출력되는 것을 볼 수 있다. 여기까지 동작을 보고 어떻게 이번 ..
-
[L.O.S] Level 28 - frankensteinWargame/L.O.S 2022. 12. 31. 04:08
Level 28 - frankenstein을 풀어보자. 이해가 되지 않는 부분들이 있어 조금 찜찜한 문제였다. 코드를 보면 괄호와 union이 필터링되고 있다. 그리고 error가 발생하면 error 문자가 나타나는 것으로 보아, Error-Based SQL Injection을 수행하면 된다. union을 사용하지 못하니 error는 범위를 초과하는 수인 9e307*2를 이용해 발생시키도록 하자. 그리고 괄호를 사용하지 못하니 if 문 대신 case when을 사용하도록 하자. 그런데, 여기서 이해가 가지 않는 부분이 있다. 아래의 사진을 보면 결과가 참인데 error가 출력된 것을 볼 수 있다. (문제의 답이 0으로 시작한다는 것을 알고 있다.) 그리고 case when의 결과와 else의 결과를 바꾸..