목록2020/06/09 (2)
Self-Improvement
CODE 1 2 3 4 5 6 7 8 9 10 11 12 13 // gcc -o srop srop.c -fno-stack-protector -mpreferred-stack-boundaey=2 char sh[] = "/bin/sh"; void int80() { asm("int $0x80"); } void main() { char buf[8]; read(0, buf, 128); } Colored by Color Scripter cs int 0x80 가젯과 EAX를 제어할 수 있는 read()함수가 존재하여 SROP가 가능하다. 자세한 사항은 위 참고자료를 확인해본다. read()함수에서 119개의 문자열을 입력하여 EAX를 0x77로 만들어준다. read()함수는 입력한 길이만큼 EAX로 반환되기 때문이다...
FILE ELF 32bit, dynamically linked, stripped 적용된 보호기법 Functions IDA Main 8888포트로 소켓 통신이 이루어진다. 그리고 그림엔 없지만 fork()로 인해 canary는 고정이 되어진다. sub_8048FC6 취약점이 존재하는 함수를 바로 확인해본다. buf 변수는 ebp-0x16이며 canary(ebp-0xC)를 빼면 10바이트크기를 가지고있다. 하지만 read함수에서 110바이트를 읽어들이고 있음으로 BOF가 발생하게 되며 sprintf함수에 의해 memory leak으로 canary까지 구할 수 있을 것으로 보인다. Canary LEAK canary의 뒤 1바이트가 \x00으로 존재한다는 가정하에 11바이트를 전송하여 leak 해본다. 그리고 ..