본문 바로가기

분류 전체보기211

[포너블] LOB 7 - darkelf LOB 7 - darkelf write up darkelf write up 입니다. here is changed 라고 친절하게 바뀐 부분을 알려준다 argv[0] 의 길이를 77로 만들지 않으면 에러를 출력한다. 우선 아까문제처럼 argv[2] 를 통해 공격을 수행하는거 같은데 argv[0]에는 내가 실행한 파일이름이 들어가는 것으로 알고 있다. 근데 이 길이를 77글자로 만들라는 것은 파일이름의 길이를 77글자로 만들라는 것인가? 그냥 잘 모르겠어서 바로 검색하기로 결심했다 서치결과 심볼릭 링크를 사용해서 해결할 수 있는 문제였다. 즉 쉽게 말하면 원본파일의 바로가기를 만들어서 바로가기 파일의 길이를 77자로 만들어주면 되는 것이다. 이거만 해결하면 바로 직전 문제와 다를게 없으므로 바로 해결해보자. .. 2021. 10. 3.
[강의노트] 합병정렬과 퀵정렬 - 2 보호되어 있는 글 입니다. 2021. 9. 30.
[포너블] LOB 6 - wolfman LOB 6 wolfman write up LOB 6 wolfman 라업입니다. 갈수록 점점 제약조건이 많아진다 이번에는 환경변수, 버퍼 초기화, 입력길이 제한 3가지의 제한이 걸렸다. 입력이 49글자 이상이면 안된다. 사실 이 문제는 보자마자 어떻게 풀이해야할지 아이디어가 떠올랐다. 전전 문제에 대한 풀이를 search하다가 argv[2]에 쉘코드를 넣고 푸는 방법을 봤었기때문에 길이 제한을 보자마자 그렇게 풀어야할 것 같았다. 즉 argv[2]에 nop+ 쉘코드를 주고, argv[1] 페이로드에는 44byte dummy + argv[2] 주소(ret) 를 주면 될 것이다. 그럼 argv[2]의 주소를 알아내는게 문제를 푸는 핵심이라고 보면 된다 [wolfman@localhost TMP]$ gdb -q .. 2021. 9. 30.
[포너블] LOB 5 - orc LOB 5 - orc write up 환경변수 초기화 egghunter에 이어서 buffer 를 초기화하는 코드까지 추가되었다. 즉 직전 문제와 비교하면 버퍼에 쉘코드를 사용하지말고, 환경변수도 사용하지말라는건데 그 두 곳이 아닌 외부의 어딘가 쉘코드를 저장하라는 것이다. strcpy 함수 호출 다음인 main+194를 bp로 걸고 버퍼 주소값을 확인한다. 버퍼가 차지하는 메모리에 RET를 주면 초기화 돼버리기때문에 스택에서 버퍼를 제외한 적당한 메모리주소를 주어야한다. 위에서 확인 되는 적당한 주소 0xbffffb34를 주고 그 뒤에 놉슬레드와 쉘코드를 주면 ret된 후 놉 슬레드를 타고 가서 쉘코드가 수행 될 것이다. ./wolfman `python -c 'print "A" * 44 + "\x34\x.. 2021. 9. 30.