본문 바로가기
CTF 공부/LOB

[LOB]darkknight

by JJWANIC 2020. 1. 29.

코드를 보니까 argv[1]의 첫번째 메모리 값이 0xbf면 안된다네요... 보통 stack 안의 주소는 bf로 시작하던데
참 큰일입니다.

잘 모르겠어서 풀이를 보니까 RTL을 이용해서 풀어야한다고 합니다. 그럴 경우 0x40으로 주소가 시작하기에 우회할 수 있다고 하네요.

간단하게 설명하면 system("/bin/sh")이 실행되게 맞춰주는거라고 합니다.

먼저 system 함수의 주소를 찾아야합니다.

제꺼에서는 0x40058ae0로 나오네요.

또 인자로 전달해 줄 /bin/sh를 찾아야합니다.

저는 이렇게 코딩하였습니다.

결과는?!

이제 paylod를 작성해야하는데 작성하는 법은

https://shipp.tistory.com/46

 

[HACKING] RTL(Return-To-Libc) 공격 이해하기

bof 원정대를 풀면서 RTL 기법을 접했는데, 너무 헷갈리더라구요ㅜㅜ 그래서 정리합니다. #include #include main(int argc, char* argv[]) { char buffer[40]; int i; if(argc < 2) { print..

shipp.tistory.com

이 분의 블로그를 많이 참고하였습니다.

'CTF 공부 > LOB' 카테고리의 다른 글

[LOB]giant  (0) 2020.01.29
[LOB]bugbear  (0) 2020.01.29
[LOB]golem  (0) 2020.01.27
[LOB]skeleton  (0) 2020.01.27
[LOB]vampire  (0) 2020.01.24