일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- load of sqlinjection
- 암호해독
- 포트스캔
- Hacking
- 내부침투
- smb
- 해킹
- Metasploit
- 해킹도구
- 권한상승
- 취약점
- 취약점 스캔
- 스캔
- 칼리리눅스
- sql
- Kioptrix
- 메타스플로잇
- SQLINJECTION
- CTF
- root권한
- 모의해킹
- Samba
- SQL Injection
- 침투테스트
- 해킹툴
- web hacking
- 스캐닝
- 취약점분석
- Los
- 시스템 해킹
- Today
- Total
목록my_study/HackCTF (22)
감자 텃밭
제목에서도 알 수 있듯 해당 문제는 RTC를 이용하는 문제인듯 하다. 우선 해당 프로그램을 확인해보자. 입력과 출력 기능이 있고, nx가 걸려있는걸 확인 할 수 있다. 또한 해당 바이너리 파일에는 pop rdx; ret 가젯이 존재하지 않는다.. 역시 RTC 기법을 사용해야할 거 같다. 해당 프로그램을 IDA로 확인해보자. 매우 단순하다 write()함수와 read()함수로 단순 출력 입력만 하고있다. 우선 RTC란 ROP기법을 사용할떄 필요한 가젯이 없을경우 사용하는 기법이다. RTC기법은 __libc_csu_init 함수를 사용하며, 가젯을 해당 함수에서 찾는것을 제외한 나머지 방법은 ROP와 동일하다. 자세한 설명은 RTC 기법설명에서 확인하자. https://hg2lee.tistory.com/en..
이번에 풀어볼 문제는 pwning라는 문제이다 제목으로는 어떤 문제인지 추측이 불가능하니 해당 문제를 우선 실행시켜보자. 높은 수를 입력하게 되면 크다고 하고 종료되고 작은 수를 넣으면 통과되어 한번 더 입력을 받도록 되어있다. 해당 프로그램의 메모리 보호기법을 확인해보자. NX가 걸려있다. 쉘코드작성은 불가능할 것이고, IDA를 통해 상세 확인을 해보도록 하자. MAIN함수에서는 특별한 걸 발견할 수 없었다 바로 vuln함수를 호출하는 듯하다 해당 함수를 확인해보자. nptr이라는 변수의 크기를 32로 지정해놓고 get_n이라는 사용자 정의함수로 nptr에 입력을 받는 듯하며 해당 입력값을 v2변수에 넣고 해당 변수가 32이상일 경우 크다는 내용 추려과 함께 종료되며, 그렇지 않을 경우 한번 더 입력받..
이번에 풀어볼 문제는 yes or no라는 문제이다 가장 오래 걸렸으며 이게 왜 150점짜리인지 도통 모르겠다.. 해당 프로그램을 우선 실행시켜 보았다. show me your number~! 이라는 문자열이 출력되며 특정 값을 입력받도록 되어있다. 그 후 또 다른 문자열들이 출력되었다. 메모리 보호기법은 NX가 걸려있으며 ALSR 또한 걸려있었다. 해당 프로그램을 IDA를 통해 상세히 분석해보았다. 아래쪽 IF조건문을 통과하면 That's cool follw me문자열을 출력하며 gets로 입력을 받도록 되어있다 해당 부분에서 bof가 일어날 것으로 예상된다. 해당 조건문에 해당하는 값을 gdb로 확인하였다. 헤다 237번째 줄을 보면 cmp를 통해 rbp-0x8과 eax의 값을 비교한다 해당 부분에 ..
이번에 풀어볼 문제는 hackctf의 rop문제이다 제목에서부터 유추할 수 있는 rop에 관한 문제이며 rop기초에 관한 문제인 거 같다. 해당 문제를 실행 및 적용된 메모리 보호 기법을 확인하였다. 문자열을 입력받고 입력 후 특정 문자열이 출력된다. 메모리는 역시 nx가 걸려있다. 해당 문제를 IDA를 통해 상세히 분석하였다. main함수에서는 vulnerable_function함수를 호출하고 write함수를 통해 특정 문자열을 출력한다. vulnerable_function함수에서는 136만큼의 buf변수를 선언하고 read함수를 통해 0x100(256)만큼 입력을 받는다 이 부분에서 bof가 일어날 거 같다. 정말 기본 rop사용 문제인 듯하다. 익스 코드는 read를 통해 bss영역에 /bin/sh..
이번에 풀어볼 문제는 hackctf의 gift문제이다 해당 프로그램을 실행 후 적용된 메모리 보호 기법을 확인하였다. 특정 문자열과 주소값 2개를 출력 후 문자열을 입력할 수 있었고 입력하면 같은 문자열을 출력 후 한번 더 입력을 받고 끝났다. 해당 메모리보호기법은 nx만 걸려있었다. IDA를 통해 좀 더 상세한 분석을 해보았다. main 함수에서 binbs의 주소와 system함수의 주소를 출력해주고 fgets함수를 통해 입력값 검증과 함께 입력받을 수 있으며 입력값 그대로 출력되고 gets로 한번 더 입력받을 수 있다 이 부분에서 bof를 일으키고 printf에서도 포맷 스트링 버그가 일어나지만 해당 문제는 rtl을 통해 풀어볼 것이다. binsh를 확인해보면 해당 주소에는 아무것도 들어있지 않았다...
이번에 풀어볼 문제는 hackctf의 lookatme라는 문제이다 일단 제목으로는 추측이 안된다!! 해당 프로그램을 실행시켜 보았다. 해당 프로그램을 실행시키면 hellooooooooooo라는 문자열과 특정 값을 입력받을 수 있도록 되어있다. 흠 일단 적용되어있는 메모리보호기법을 확인해보았다. nx가 걸려있는것으로 보아 쉘 코드는 실행이 되지 않을 것 같다. 해당 프로그램을 IDA를통해 좀 더 상세히 분석해보았다. main함수에서는 해당 문제의 이름과같은 look_at_me 함수를 호출하고 해당 함수로 들어가 보면 puts로 문자열을 출력하고 gets로 문자열을 입력받는다 이 부분에서 bof가 일어난다 여기서 이상한 점을 발견했다 해당 프로그램에 함수가 굉장히 많이 있었다 여기서 이상한점을 느끼고 해당 ..
이번에 풀어 볼 문제는 hackctf의 beginner_heap문제이다 제목에서부터 유추 가능하듯 heap관련 문제인 거 같다 일단 해당 프로그램을 실행시켜보았다. 문자열을 두 번 입력받을 수 있도록 되어있고 따로 출력되는 문자열은 없다. 이번엔 적용된 메모리 보호 기법을 확인해보았다. 음 NX만 걸려있는걸로보아 쉘코드는 실행이 안될것이고 이상하게도 어떠한 오류인지 해당 프로그램을 gdb로 까봤을때 main함수부분이 나오지않아 IDA로 모두 해결했다 우선 해당 프로그램의 코드는 아래와 같다. V3변수에0X10 즉 16크기만큼의 메모리를 할당하고 V3에 1을 넣고 그 후 V3+1에 8크기만큼의 메모리할당 V4와 V4+1 에도 똑같이 메모리를 할당한다 총 4개의 동적메모리를 할당한다. 그 후 fgets를 통..
이번에 풀어볼 문제는 hackctf의 random문제이다 이번 문제는 접근 방식이 생소하여 검색을 통해 새로운 것들을 많이 알게 된 문제이다 일단 해당 문제를 실행시켜보았다. 해당 프로그램을 실행시켰을때 특정한 값들이 랜덤적으로 나오는 것을 확인할 수 있었다(난수) 또한 해당 프로그램의 적용된 메모리 보호 기법을 확인하였다 역시 NX가 걸려있는걸로 보아 쉘 코드는 실행이 불가능해 보였다 IDA를 통해 좀 더 상세히 분석을 해보았다. V3변수에 time(0ll) 즉 null값을 넣고 srand함수의 인자 값으로 v3를 넣었다 time함수에 널값을 넣게 되면 1970년 1월 1일 0시 이후부터 현제까지의 시간이 초로 변환되어 저장된다. 그리고 srand함수는 rand함수를 사용할 때 시드 값을 설정해주는 함..