IT 그리고 정보보안/Write-up

LOB Level 9 (troll)

plummmm 2021. 4. 12. 19:05
반응형

vampire 열어보자.

 

잡다구리한 옵션들이 어느정도 제거되고 새로운 조건이 생겼다.

일단 스택영역에만 코드를 올릴 수 있는건 여전하고

0xff○○ 이 주소를 사용할 수 없게 되었다.

보통 스텍영역이 0xc0000000 전 까지 할당되어 사용된다. 0xbfffffff 부터.

근데 0xff○○ 주소를 못쓴다니.. 그럼 지금 현재 스택 주소보다 아래에 할당해야 된다 이말.

(높게는 못하지.. 커널영역이니)

 

어떻게 해야 하나. 일단 캡쳐화면을 하나 보자

 

 

인자에 A갯수를 변화시켜가며 스택의 주소를 관찰하였다.

갯수가 늘어날수록 주소가 낮아지는게 보임??

 

이게 왜이렇냐면..

envp(환경변수)는 고정이라서 argv 인자 자리에 많은 값을 때려넣으면 그만큼 스택이 아래로 밀리는 거지.

위로 계속해서 할당하고 싶지만 환경변수 자리에 막혀서 내려가는 거.

이 사실은 나도 처음 알았다. 그냥 환경변수까지의 크기가 넘치면 오류가 날 줄알았는데 밑으로 밀리다니..

 

그럼 엄청나게 많이 넣어보자. 0xff○○ 에서 0xfe○○ 가 나타날 때 까지.

 

10만개를 집어넣으니 0xfe○○가 나타났다. 오.

그럼 10만개를 넣은채로 이곳에 RET를 주면 공격이 성공할 듯

 

argv[1]에는 RET를 변조해야 하니까, 쓰레기값과 셸코드는 argv[2]에 넣도록 해야겠다.

argv[1]= [nop 44] [RET]

argv[2]= [nop 100000] [shellcode]

 

이제 여서 두가지를 생각해볼 수 있다.

RET를 어디로 할 것인가.

답은 뭐 나와있다.

NOP에 걸터서 올려줘야지. 즉, argv[2] 보다 높은 주소에다가 ret를 주면된다.

 

argv[2]의 주소이다. 저거 보다 위로 RET를 주면 된다.

 

몇번 노가다하니까 셸이 따짐.

반응형

'IT 그리고 정보보안 > Write-up' 카테고리의 다른 글

LOB Level 11 (skeleton)  (0) 2021.04.12
LOB Level 10 (vampire)  (0) 2021.04.12
LOB Level 8 (orge)  (0) 2021.04.12
LOB Level 7 (Darkelf)  (0) 2021.04.12
LOB Level 6 (Wolfman)  (0) 2021.04.12