orc소스와 비슷하지만 뭔가 업그레이드가 됬네요 여기서 먼저
memset함수를 말씀드리자면
memset(a,b,c) = a = 채울 메모리의 주소 b =채울 문자 c = 채우려고 하는 문자의 개수입니다
음 버퍼로 공격하는걸 막네요 저번 소스와 비슷하고 전 argv[2]를 이용햇었는데 될지 안될지 저 memset이 정확히 무엇을 막는지 햇갈리기 때문에 방금했던 공격을 다시 한번 이용해보겠습니다 .
아까와 같아서 새로 추가된 memset에 대해서만 가져왔습니다.
이 코드를 보니 뭔가 더 이해가 되는군요
main 214에서 40을넣어주고
main 216에서 0 을넣어주고
main 218에서 버퍼의 주소를 넣어주는군요
오오... 뭔가 이렇게 하나만 쫙 보니까 좀 더 분석을 다음에 쉽게 할수 잇을거같은 자신감이 생깁니다 .
시그널 SIGSEGV가 실행되면서 와장창 해버리네요
0xbf424242에서 문제가 있다고 하는거같습니다 .
그렇다면 이번에는 A*47 + \xbf를 해보겠습니다
또 에러가 생기네요 혹시 argv[2]가 문제일까요 ? 뺴놓고 실행해보겠습니다
...자세히보네 /tmp/./wolfman을 실행하는군요 -_- 죄송합니다 제대로 다시 gdb를 열어서 처음에 입력햇던것을 다시 한번 실행시켜보겠습니다
성공적이군요! break point는 main+222를 잡아뒀습니다.
A*47 B*3 \xbf 가 보이는군요 ret값도 포함되어잇겠습니다 .
argv[2]의 A*100 도 마찬가지로 나오네요
[*팁을 주셔서 글을 추가로 더 적겠습니다 신기하네요!]
gdb에는 nexti라는 기능이 있습니다
nexti : 다음 기계 명령어까지 응용프로그램을 수행합니다. 라는데요
지금 브레이크포인트를 main+222지점 즉 memset부분에서 멈춰뒀는데
nexti 를 사용하게 되면 memset이 실행된 부분을 볼 수 잇겠네요!
띠용...40버퍼만큼 사라져버렸군요 하지만 저는 argv[2]를 통해서 공격을합니다
고로 제가 푸는 방법과는 무관하다는것을 알게되었습니다.
그럼 공격을 해보겠습니다
성공했습니다! 잠시 쉬었다가 계속 문제를 풀어야겠습니다 오늘은 3~4시정도에 자야겠군요 다음날 학교를 가야해서.. ㅠㅠ
'해커스쿨 lob' 카테고리의 다른 글
LOB orge (0) | 2016.05.02 |
---|---|
LOB darkelf (0) | 2016.05.02 |
LOB goblin (0) | 2016.05.01 |
LOB cobolt (0) | 2016.04.30 |
LOB gremlin (0) | 2016.04.30 |