|  |
| |
| kumi123 |
그러니깐.. 뭐라고 해야 할까요..
복사본에 주소와 원본의 주소가 100% 일치 하지 않습니다..
앞뒤로 nop을 엄청나게 둔다음에, 따시면 금방 따질 것입니다.. |
2013/07/28 |
|
| Spero |
ret 주소 마지막에 bf가 들어가야되서 앞뒤로 nop엄청나게 한다고 풀어질거같지가않은데.... 좀 자세히좀 말해주세요 ㅋㅋㅋ |
2013/07/28 |
|
| kumi123 |
argv[2] 에 넣어서 푸심 되요..^^
꼭 buffer에 올릴필요는 없다는.. |
2013/07/28 |
|
| Spero |
음 저도 구글링해서 다른분들꺼 풀이보면서 argv[2]에 올리면 풀리는건알겠는데... 그러니까 왜 풀리는지? 이런것도 의문이가서... 이방법으로 풀어볼려고하다보니까 ㅎㅎ.. ;; |
2013/07/28 |
|
| kumi123 |
쉘코드를 아무대나 넣어도, ret이 쉘코드만 가르키만다면, 쉘코드가 실행이 됩니다..
그런이유로, buffer에 넣어도, ret뒤에 넣어도, argv[0]에 넣어도, argv[2], 환경변수에 올려도
되는 것이지요...
|
2013/07/29 |
|
| Spero |
오호... 제가 너무 틀에 박힌 생각만 한거같네요.. ㅋㅋ 근데 원인을찾았습니다. 사본과 원본의 이름의 길이가 다를경우 다른 주소를 주던데 그 이유도 혹시 아시나요?? ㅎㅎ |
2013/07/29 |
|
| kumi123 |
아규먼트의 크기(길이) 에 따라, 스택에 아랫부분에 아규먼트가 쌓이기 때문에..
주소가 밀릴수가 있습니다..
그 이유로, argv[2]에 10000만쯤 넣으면...
0xbfff 가 아니라..
0xbffe 이런식으로도 나올 거에요.. |
2013/07/30 |
|