Nightmare
-
Level19 (nightmare -> xavius)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:47
이번 문제의 키워드는 arg 입니다. stack영역 사용 불가능, binary 영역 사용 불가능 leave 와 ret로 끝나는 libc 함수도 사용 불가능 합니다. stack도 RET를 제외하고 모두 초기화를 시킵니다. 또한 취약한함수로 fgets 를 사용하고 stdin 을 사용합니다. \xbf , \x08 로 시작하는 값은 이용할 수 없기 때문에 stdin 영역이 사용하는 주소가 \xbf, \x08이 아니라면 쉽게 해결할 수 있을 것 같습니다. 먼저 stdin 부분에 break를 걸어서 stdin 중에서 어디에 데이터가 들어가는지 알려가보겠습다. 3번째 push 된 값인 ds:0x08049a3c가 stdin 이라는 것을 알 수 있습니다. fgets 전과 후를 break 해서 비교해 보도록하겠습니다. 먼..
-
Level18 (succubus -> nightmare)$ 시스템 해킹 $/Los Of BufferOverflow 2020. 1. 1. 14:44
이번 문제의 키워드는 PLT입니다. 코드를 보면 RET에 strcpy의 주소를 넣어야 하는 것으로 보이네요! 하지만 memset으로 RET이후에 오는 4byte 까지 A로 초기화를 하게 됩니다. strcpy의 PLT를 이용하는 문제 인것 같지만 간단하게 strcpy을 이용한 간단한 문제 풀이로도 풀이가 됩니다. strcpy의 기본 형식은 아래와 같습니다. 해당 문제는 아래의 페이로드로 문제를 해결해 보려고 합니다. [system 주소] + [Dummy 4 byte] + ["/bin/sh 주소"] + [Dummy 32 byte] + [strcpy 주소 (실행 파일 RET)] + [Dummy 4 byte] + [ebp+8주소 (strcpy Dest)] + [buf 주소 (strcpy Source)] 위의 페..
-
[Lord of SQL_injection] #18 nightmare$ 웹 해킹 $/los.rubiya.kr 2019. 4. 6. 00:58
새로운 방식의 문제가 나온것 같습니다. pw의 길이는 6문자이고 pw의 파라미터로만 입력을 하는것입니다. mysql에서 문자열과 0을 비교했을때 항상 참을 반환한다는것을 알게 되어있습니다. 이름 Mysql의 auto type cast라고 하는데 string의 column값을 int형과 비교를 하게 되면 string은 항상 0을 return 하게 됩니다. 그래서 해당 리턴값과 0을 비교하게 되면 항상 참을 반환하게 되는 것이지요 정확히 6글자 여야 하기 때문에 #과 -가 필터링된 주석처리문제는 %00으로 대체 하겠습니다 ?pw=')=0;%00