tuCTF guest_book
변수를 보면 system 함수의 주소를 준다 나중에 써먹을 수 있을 것 같다. 그 이외에는 게스트 이름들을 v11을 guest name을 v11에 받고 dest변수에 포인터로 저장한다. dest에는 guest name이 있는 주소가 저장되어 있을 것 같다.
Change 부분에 대놓고 취약점이 있는 함수들을 쓴다. 처음에 보고 당황했다.;;
View 함수에서 릭을 할 수 있었다. guestname을 지정하지 않은 부분도 출력하게 해놨기 때문에 다른 주소도 릭을 할 수 있었다.
0,1,2,3이 guest name을 담은 주소들인데 시스템 주소도 같이 릭이 됐다. dest[4]까지만 선언이 됐었는데 0 1 2 3 으로 4를 채우고 추가로 2개를 출력하느라 null까지 만나느라 출력되는건가,,?(잘 모르겠다)
시스템 주소를 구했으니 그냥 gets 이용해서 쉘을 땄다. view 가 어떤식으로 되는지 보다가 시간을 엄청 날렸다. 포인터에 대해서 공부를 더 해야겠다고 느꼈다.
'CTF' 카테고리의 다른 글
2016 Hitcon secret holder (0) | 2018.01.21 |
---|---|
2017 Codegate messenger (0) | 2018.01.06 |
2014 Plaid CTF Ezhp (0) | 2018.01.04 |
tuCTF vuln-chat2 (0) | 2017.11.29 |
tuCTF vuln-chat (0) | 2017.11.28 |
tuCTF vuln-chat2
main 함수를 보면
doThings 함수를 들어가봤더니
buf 변수의 크기가 20만큼밖에 안되는데 read함수로는 0x2D나 받는다. 값을 덮을 수 있을 것 같아서 0x2D만큼 값을 덮었다.
그 후 GDB로 봤더니
ret 주소중에서 2byte가 42(B) 43(C)로 덮인 걸 알 수 있었다.
그래서 아 ret 주소의 2바이트를 조작할 수 있겠다고 생각했다.
조작된 ret 주소를 보면 0x0804(43)(42)고 이 flag를 출력해주는 함수 주소를 보면 0x0804(86)(72)이다.
2바이트를 조작할 수 있으니 아무 값이나 덮고 마지막 2byte만 flag 출력 주소의 값인 86 72 로 바꾸면
플래그가 나온다.
'CTF' 카테고리의 다른 글
2016 Hitcon secret holder (0) | 2018.01.21 |
---|---|
2017 Codegate messenger (0) | 2018.01.06 |
2014 Plaid CTF Ezhp (0) | 2018.01.04 |
tuCTF guest_book (2) | 2017.12.03 |
tuCTF vuln-chat (0) | 2017.11.28 |
tuCTF vuln-chat
오랜만에 포스팅을 다시 시작하게 됐다. 평소에도 공부를 해왔지만 블로그에 글 올리기 귀찮아서 미뤘던 것 같다. Github에도 올려야되는데..
이제부터 꾸준히 올려야겠다.
문제를 IDA로 열어서 main함수를 Hex-ray로 보면
이런식으로 나온다.
v6 = 1932538661 인데 이걸 문자열로 보면 s03% 이라고 나온다.
딱 보면 알겠지만 %30s 이다.
변수 v5의 사이즈는 20인데 30까지 받는다는 건 다른 변수 값을 조작할 수 있다는 뜻!
그래서 v5 다음 변수인 v6 값을 조작할 수 있다. 그래서 아무 값이나 20byte 만큼 덮고 다음 scanf 때 v4에 값을 무한히 넣어줄 수 있게
%s를 넣는다.
이제 두 번째 scanf에서 아무 값이나 49byte 만큼 덮고 그 다음이 ret니까
이 함수주소 0x0804856B를 넣어주면 된다.
'CTF' 카테고리의 다른 글
2016 Hitcon secret holder (0) | 2018.01.21 |
---|---|
2017 Codegate messenger (0) | 2018.01.06 |
2014 Plaid CTF Ezhp (0) | 2018.01.04 |
tuCTF guest_book (2) | 2017.12.03 |
tuCTF vuln-chat2 (0) | 2017.11.29 |