fedora 원정대 core 3 hell_fire -> evil_wizard

fedora 원정대 core 3 hell_fire -> evil_wizard evil_wizard.c hint 를 보면 GOT overwritting이 써있다. GOT overwritting 공격을 시도하여 쉘을 얻을 수 있다. strcpy함수에서 overflow가 발생하여 eip를 원하는 곳으로 이동 시킬수 있게된다. eip를 strcpy의 plt(고정주소)로 이동시켜 strcpy함수를 호출할 수 있고 ret에 poppopret가젯의...
Read more

fedora 원정대 core3 dark_eyes -> hell_fire

fedora 원정대 core3 dark_eyes -> hell_fire hell_fire.c sfp를 복사해 두었다가 원상복귀 시키고 fgets로 받은 문자를 strcpy하는 과정에서 스택을 조작할 수 있다. tcp 7777로 remote환경이다. 다른사람들의 라이트업을 참고해보니 do_system으로 eip를 이동시켜서 쉘을 얻는 것을 볼 수 있었다. do_system이 무엇일까.. system 함수에서 do_system을...
Read more

linux system call

linux system call mlock() 메모리의 페이지 잠금 munlock() 메모리의 페이지 잠금 풀기 mlockall() 호출한 프로세스의 페이징을 금지시킨다. munlockall() 호출한 프로세스에 대한 페이징을 다시 가능하도록 한다. sched_setparam() 스케줄 파라미터 설정 sched_getparam() 스케줄 파라미터 설정값 가져오기 sched_setscheduler() 스케줄 알고리즘 파라미터 설정 sched_getscheduler() 스케줄 알고리즘 파라미터 값 가져오기 sched_rr_get_interval() 프로세스의 SCHED_RR간격을 가져온다 nanosleep() 지정한 시간에 실핼을 잠시 멈춘다. mremap() 가상 메모리 주소를 재대응 시킨다. poll()...
Read more

fedora 원정대 core3 iron_golem -> dark_eyes

fedora 원정대 core3 iron_golem -> dark_eyes dark_eyes.c sfp를 백업 해두었다가 오버플로우가 발생한 이후에 sfp를 원상복귀 시킨다. sfp는 사용할 수 없고 ret를 조작 할 수 있다. hint에 RET sleding이 써있다. RET sleding을 사용하여 스택영역을 벗어난 후에 execve함수를 실행하면 execve함수의 인자로 고정적인 문자열을 넣을 수 있다.그 문자열을 이용하여 쉘을...
Read more

raspberry pi linux kernel compile

raspberry pi linux kernel compile 라즈베리파이에서 디바이스 드라이버를 작성하거나 커널을 수정하기 위해서는 라즈베리파이의 커널 소스를 참조하여 컴파일하기 때문에 라즈베리파이의 커널 소스를 다운 받아야한다. 라즈베리파이의 커널소스와 툴은 github에서 다운받을 수 있다. git clone http://github.com/raspberrypi/linux.git git clone http://github.com/raspberrypi/tools 나는...
Read more

ARM assembly 공부, bof

ARM assembly를 공부하기 위해서 bof redhat 원정대 1번 문제를 ARM환경에서 컴파일하고 단순하게 어셈블리어만 라인바이라인으로 분석해보고 x86 리눅스에서와 어떤식으로 다른지 확인 해 보았다. bof 1번 문제의 c코드 strcpy에서 버퍼의 크기를 확인하지 않아 버퍼오버플로우가 발생 될 것으로 예상된다. c코드 바이너리의 어셈블리어코드 ...
Read more

gdb script을 이용한 편리한 디버깅환경 만들기

$(HOME)/.gdbinit을 생성하면 gdb가 실행될 때 .gdbinit을 불러옴으로 스크립트를 적용시킬 수 있다. ARM 어셈을 처음다루어 라인바이라인으로 분석해 보기위해 몇 가지 스크립트를 작성하였다. .gdbinit jk를 치면 info reg, x/i $pc, x/i $pc가 실행된다 가독성을 높이기 위해 x/i $pc를 두번 하였다. jkst 를 치면 sp부터...
Read more