본문 바로가기

Wargame/LOB(Redhat)

[Lv.2] Gremlin Gate에 이어, Gremlin을 풀이합니다. Login : gremlinpass : hello bof world gremlin 환경에 주어진 cobolt.c 코드입니다. 1번과 다른점은, 버퍼(배열)가 작네요. 이게 의미하는 건 기본적으로 redhat에서 동작하는 system("/bin/sh") 쉘코드가 24바이트인데 이걸 다 넣지 못한다는 거에요. 즉, 버퍼에 쉘코드를 삽입하는 방법은 쓰지 못하게 되었습니다. 하지만, 이 redhat 환경에서는 아무런 보호기법이 걸려있지 않기 때문에 스택의 어느곳이든 값을 넣을수만 있다면 쉘코드 실행이 가능합니다. 가령, argv[] 나 환경변수 영역에 값을 넣어도 말이지요. (이 두 군데는 저희들이 임의로 값을 input할 수 있는 곳이고 스택의 주소값이 바뀌지 않.. 더보기
[Lv.1] Gate LOB Redhat은 보호기법이 적용되어 있지 않은, 취약점이 무수히 많이 존재하는 환경입니다. 이 환경에서 Gate 문제는 기본적인 bof 취약점만 가지고 있기 때문에 쉘을 얻어낼 수 있는 방법 또한 다양합니다. 이걸 다 적기에는 제가 너무 힘들기 때문에 문제 풀 때마다 알려드리고 싶은 게 생각나면 다른 방법으로도 접근하는 방법을 보여드리고자 합니다. Login : gatepass : gate Gate 문제입니다. 코드를 보아하니 아주 대놓고 stack corruption을 일으켜주라고 하네요. 심지어 dep, aslr도 없기 때문에 스택에 쉘코드를 올려놓아 쉘을 띄우는 방법과 RTL, 환경변수에 쉘코드를 올려놓는 방법, argv[2]에 쉘코드를 올려놓는 방법, ... 등등 여러 방법이 있습니다. 우선.. 더보기
들어가기 전, 편한 환경에서 풀기 위한 환경세팅 그냥 가상환경 (vmware랄지 페러렐즈랄지.. 버박이랄지.) 에서 돌리셔도 무관하지만 LOB 환경에서 직접 풀기엔 불편함(오로지 터미널만 보이기 때문에, 그리고 창도 1개만 띄우기 때문에 여러모로 불편함)이 너무 많기 때문에 전 LOB를 켜고 LOB의 ip주소를 알아내어 다른 환경 (윈도우랄지 리눅스) 에서 LOB에 붙도록 하겠습니다. LOB, gate로 접속한 화면입니다. 여기서 ifconfig를 하면 명령어가 없다고 나오므로 /sbin/ifconfig 를 실행해줍니다. 그럼 주소가 10.211.55.20 으로 나오는데 (이건 제 환경이기 때문에 이렇게 나오고 여러분이 실행하면 다른 주소가 나옵니다.) 이걸 실제 리눅스에서 telnet 10.211.55.20으로 붙는다면? 와우? 창을 여러개 띄워놓고.. 더보기