pwn영역 문제를 푸는데
간단한 워밍업 문제로 ASLR을 제외한 모든 보호기법이 풀린 문제가 하나있었는데, bss섹션의 +0x100의 구간부터가 쉘코드를 넣고 흐름을 돌렷을 때 실행이 되던데 그 구간이 Heap영역이라 그런가요?
그리고 universal gadget from __libc_csu_init 이라고 해서 저런게 있다는데
gdb상에선 아무리봐도 해당파일엔 없던거 같은데 저게 뭔지 모르겠네용 ㅠ
메인함수 실행전에 있다는데 ㅠㅜ
(잡담 : 64비트 재밋네용 ㅋㅋㅋㅋ)
Hit : 3176 Date : 2017/04/12 12:55
해쿨러
아뇨 bss+0x100은 힙영역이 아닙니다
universal gadget은 지금 검색해봤는데 그냥 인자컨트롤하는 가젯이네요
이 가젯은 프로그램에서 실제 실행되는것은 아니고,
인텔 명령은 어디부터 읽느냐에 따라 다른명령이 되는데
push $0x12345678 은
68 78 56 34 12 인데 이걸 78부터 읽으면 다른 명령, 56부터 읽으면 다른명령이 됩니다
그런식으로 실제 프로그램에 존재하지 않는 것으로 보이는 인스트럭션들을 실행할 수 있습니다
2017/04/13
vngkv123
reafelf상에선 bss영역 사이즈가 8로 나왓는데 그러면 bss+0x100이면 어디에 해당하는건가요? 그대로 bss영역인가요?
2017/04/13
해쿨러
아 그건 실제로 프로그램에서 bss영역을 사용하는 크기구요
메모리는 항상 페이지 단위(리눅스에서는 0x1000단위)로 매핑되기 때문에 예를들어서 bss가
0x804a0b0인 경우에 실제 메모리 할당은 0x804b000까지 이뤄집니다