SH1R0_HACKER
1. gate -> gremlin 본문
The Lord of BOF에 대한 자세한 정보는 아래에서 확인할 수 있습니다.
[BOF-BufferOverflow- 원정대란?]
비교적 쉬운 BOF 공략 환경인 Redhat 6.2에서부터 궁극의 Fedora 14까지
수십개의 레벨을 거쳐가며 BOF 시스템 해킹 실습을 하는 War-Game입니다.
www.hackerschool.org/HS_Boards/zboard.php?id=HS_Notice&no=1170881885
login : gate
password : gate
[ gremlin.c ]
/*
The Lord of the BOF : The Fellowship of the BOF
- gremlin
- simple BOF
*/
int main(int argc, char *argv[])
{
char buffer[256];
if(argc < 2){
printf("argv error\n");
exit(0);
}
strcpy(buffer, argv[1]);
printf("%s\n", buffer);
}
딱봐도 취약해 보이는 부분이 눈에 들어온다.
strcpy(buffer, argv[1])
사용자로부터 인자를 입력받은 후 문자열을 복사해서 버퍼에 저장하는 strcpy
stack5에서 실패한 쉘코드를 넣어서 풀어보자.
[ GDB 분석 ]
칼리 리눅스로 풀다가 putty로 접속하니 간지가 안난다.
%ebp-256 을 eax로 이동하는 main+62 지점에 브포를 걸어보자.
권한이 없다고한다.
gremlin 실행파일을 복사해서 다른이름으로 하나 더 만들어주자.
난 gremlin2로 만들어줬다.
실행이 아주 잘된다.
0xbffff9f8에 AAAA가 아주 잘 들어갔다.
buffer 주소 : 0xbffff9f8
이제 buffer와 ret의 거리를 구하자.
아래의 사이트를 이용하면 엄청 쉽게 구할 수 있다.
projects.jason-rush.com/tools/buffer-overflow-eip-offset-string-generator/
ret에 브포걸고 길이 500정도로 해서 넣은 후 오프셋을 구했다.
buffer와 ret 거리 : 260byte
이제 쉘코드를 구해오자.
stack5를 풀 때 사용했던 25byte 쉘코드를 들고왔다.
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80
페이로드를 작성해서 공격하자.
'System > The Lord of BOF' 카테고리의 다른 글
6. wolfman -> darkelf (0) | 2020.10.24 |
---|---|
5. orc -> wolfman (0) | 2020.10.22 |
4. goblin -> orc (0) | 2020.10.22 |
3. cobolt -> goblin (0) | 2020.10.21 |
2. gremlin -> cobolt (0) | 2020.10.19 |