본문 바로가기

분류 전체보기77

web_3 보호되어 있는 글 입니다. 2020. 2. 7.
web_2 보호되어 있는 글 입니다. 2020. 1. 31.
[LOB]assassin FEBP를 이용해서 풀어야 하네요. 잘 몰라서 여기저기 많이 보면서 공부했습니다. ./filename + dummy[4] + &(nop+shellcode) + dummy[32] + &argv[1] + (nop + shellcode) argv[1]의 주소를 모르기에 0xbfbfbfbf로 넣었습니다.! 그리고 생긴 core dump로 argv[1]주소를 확인해보니 argv[1]의 주소는 0xbffff801이네요!! 이걸 이용해서 이제 payload를 작성해서 실행해보면 성공! 2020. 1. 30.
[LOB]giant stack 영역도, RTL도 안되네요... 그럼 뭐가 있을까요? 48byte 중 44byte를 초기화하는거 보니까 4byte 어디 주소로 이동해야하는데...... 호출되는 exit()의 주소가 0x80으로 시작하네요 이런 점을 이용하는 것이 아닌가 싶습니다. 아니였습니다.!!! ret 주소를 다시 호출하고 Shellcode가 담긴 주소를 넣은 후 Shellcode를 넣으면 된다고 합니다.! ret sled라는 취약점이 있습니다. ret는 pop eip jmp eip로 구성되어있습니다. eip에 return address를 넣고, jmp로 이동하는데 ret ret를 연속으로 쓰면 이동하는 주소를 변조시킬 수 있나봐요. payload : ./assassin `python -c 'print "ret Addre.. 2020. 1. 29.
[LOB]bugbear 딱 봐도 어려워보이네요... argv[1]의 44번째부터 4바이트가 execve의 주소랑 같아야합니다. execve(exit()) 후 execve의 ret에 system을 넣고 인자로 /bin/sh을 넣어서 풀어야합니다. (write up 봣습니다 ㅎㅎ.. 어렵네요) 필요한 것들은 - execve 주소 - exit 주소 - system 주소 - /bin/sh 주소 - NULL 주소 이 값들을 구해보면 이렇게 주어지네요! - execve 주소 : 0x489d0a40 - exit 주소 : 0x400391e0 - system 주소 : 0x40058ae0 - /bin/sh 주소 : 0x400fbff9 - NULL 주소 : 0xbffffffc 이걸 이용해서 paylod를 작성하면 ./giant + dummy[44.. 2020. 1. 29.
[LOB]darkknight 코드를 보니까 argv[1]의 첫번째 메모리 값이 0xbf면 안된다네요... 보통 stack 안의 주소는 bf로 시작하던데 참 큰일입니다. 잘 모르겠어서 풀이를 보니까 RTL을 이용해서 풀어야한다고 합니다. 그럴 경우 0x40으로 주소가 시작하기에 우회할 수 있다고 하네요. 간단하게 설명하면 system("/bin/sh")이 실행되게 맞춰주는거라고 합니다. 먼저 system 함수의 주소를 찾아야합니다. 제꺼에서는 0x40058ae0로 나오네요. 또 인자로 전달해 줄 /bin/sh를 찾아야합니다. 저는 이렇게 코딩하였습니다. 결과는?! 이제 paylod를 작성해야하는데 작성하는 법은 https://shipp.tistory.com/46 [HACKING] RTL(Return-To-Libc) 공격 이해하기 bo.. 2020. 1. 29.
web_1 보호되어 있는 글 입니다. 2020. 1. 29.
[LOB]golem 문제를 보니까 argv를 복사하는데... 1byte를 더 복사하네요. 1byte를 이용해서 주소를 옮겨 공격하는 FPO 기법이 있대요. https://bob3rdnewbie.tistory.com/188?category=699188 Frame Pointer Overflow ( 프레임 포인터 오버플로우, FPO ) 지난 번에 FakeEBP에 대한 글을 작성하였는데 비슷한 원리를 가지는 공격 기법으로 FPO가 있다. 사용 환경에는 다음과 같은 조건이 따른다. 1. SFP 영역에서 1 바이트 오버플로우가 반드시 일어나야 함 2. 메인 함.. bob3rdnewbie.tistory.com 이 분의 블로그가 정리가 아주 잘 되있어서 많은 도움이 되었습니다. 저는 argv[1]에 nop + shellcode를 넣고 a.. 2020. 1. 27.
[LOB]skeleton 코드를 보니까 전달하는 인자는 최소 한개여야하는데.. 문제는 stack destroyer네요.. buffer 값을 44만큼 초기화하고, buffer에서 48 더한곳부터 스택 전체를 0으로 초기합니다. argv[2]를 사용할 수 없어서 ㅠㅠ...고민 좀 해볼께요. LD_PRELOAD를 이용해야 풀 수 있다고 그럽니다.! 메모리에 공유 라이브러리 공간이 있는데 이 공간에 Shell code를 넣어놓고 (LD_PRELOAD 환경변수를 이용해서!) 그 주소를 가져다고 ret에 덮어쓰면 shell이 실행된대요. 한번 해보겠습니다. gcc -fPIC -shared 옵션을 줘서 shell code가 들어간 이름으로 공유 라이브러리를 생성하고 LD_PRELOAD에 넣어줍니다. 그리고 실행시켜 core파일을 생성 후, .. 2020. 1. 27.