일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JUCE
- 연결리스트
- 운영체제
- BOJ
- 자료구조
- 알고리즘
- go channel
- C++ gui
- Nebula
- JUCE library
- JUCE 튜토리얼
- C++ gui 라이브러리
- C언어
- vim-go
- 프로그래밍
- C++
- 공룡책
- 리듬게임
- OS
- gui
- 백준
- a tour of go
- Docker
- tour of go
- 코딩
- LOB
- c++ heap
- go
- C++ library
- JUCE라이브러리
- Today
- Total
목록Hacking/LOB(Fedora3) (8)
CafeM0ca
ID:dark_stonePW:let there be light 득템~~ 후기FC3를 풀면서 메모리에 대한 이해가 확실히 전보다 나아졌다. 다만 나는 아직 파이썬 스크립트짜는게 익숙하지가 않다..ㅠㅠ 편리한만큼 더 공부해야겠다.코드게이트 예선이 2일남았다.. 2일안에 힙을 조금이라도 공부하고 예선 붙었으면 좋겠다.
ID:evil_wizardPW:get down like that이전 문제에서 로컬->리모트로 바뀌였다. 따라서 심볼릭링크를 못쓴다. 필요한걸 구해보자 NULL: 0x8049814payload는 아래와 같다."A"*268+"strcpy+ppr+"memcpy_got1+c0+strcpy+ppr+memcpy_got2+07+strcpy+ppr+memcpy_got3+75+strcpy+ppr+memcpy_got4+NULL+memcpy+AAAA+&(/binsh) 12345678910111213141516171819202122232425262728293031323334353637383940import socketimport structp = lambda x : struct.pack("
ID:hell_firePW:sign me upret썰매가 불가능하고 argv[1]의 길이만큼만 냅두고 스택을 초기화해버린다. 모카는 bss영역에 execv인자들을 구성해줄꺼다. bss영역 0x80498b0 //bss(block started by symbol)영역은 초기화되지 않은 전역 데이터들이 있다. buffer는 ebp-264부분이다. strcpy: 0x8048494 bss영역이 텅텅 비어있다. /bin/sh 바이너리들(/,b,i,n,/,s,h)을 1바이트씩 덮어씌워줄꺼다.0x80498b0에는 덮어씌운 execv의 주소를, 0x80498b0+8에는 /, 0x80498b0+9에는 b, 0x80498b0+10에는 i ...이런식으로 구성해줄거다. 인자를 찾자.memcpy got: 0x8049888 pp..
ID:dark_eyesPW:because of you리모트라서 심볼릭링크가 불가능하다.일단 어셈블리부터 보자.ebp-1304가 temp다. 인자를 보면 fgets임을 알 수 있다.strcpy부분. ebp-264가 버퍼다.temp를 꽉체워서 buffer를 덮으면 편하겠지만 1024밖에 못채운다.따라서 모카는 stdin에 execv를 셋팅하고 strcpy로 memcpy의 got를 execv의 주소로 덮어씌우고 memcpy를 호출할꺼다.strcpy와 memcpy를 거꾸로해도 되지만 인자구성이 까다로워진다. execv의 주소는 stdin의 주소로 사용하면 됀다.(plt와 got의 설명은 생략. 구글링 ㄲ) payload"A"*268+strcpy+memcpy+memcpy's got+&(execv)strcpy의 호..
ID:iron_golemPW:blood on the fedora어디보자..gate에서 썼던방법은 못 쓴다. sfp를 저장해놨다가 다시 복구해버리니 덮어버려봤자 쓰레기값이 들어있을꺼다.힌트에 Ret sleding이라 써있는데 ret가젯을 적절히 사용하면 되나보다. ebp-268이 sfp고 ebp-264가 버퍼다. ebp를 확인해보니 저 어딘가 심볼릭링크를 걸어주고 execl을 호출하면 될꺼같다.ebp+24부분을보면 0x83eff4가보인다. ebp+28이 NULL이니까 저기를 사용해보자. execl을 사용하니 인자가 제대로 안박힌다. execv를 사용하자.첫번째인자는 path고 두번째인자는 argv니까 여기서는 두번째인자가 필요없으니 NULL을 준다. 0x83eff4에 심볼릭링크를 걸어주면된다. payloa..
ID:gatePW:gate ssh로 접속해야한다. 처음에 이걸 몰라가지고 한참 어리둥절했었는데.. 벌써 그게 4달전이다. ssh gate@ip 거져주는 문제같지만 보호기법때문에 까다롭다. main+81부분을 보면 strcpy를 호출하고 있다. 인자로 ebp-264가 들어가니 스택을 확인해보면buffer(256) | dummy(8) | sfp(4)=ebp | ret(4)=ebp+4 로 구성되어 있다. 자자..그럼그럼 쉘코드도 사용못하고 라이브러리함수는 1번밖에 호출이 안되는데 system함수를 사용하자니 권한이 다운되어 못써먹는다. exec계열의 함수로만 가능한데 그렇다면 변조된 스택은 아래와 같이 될꺼다.A(268) | exec계열함수(4) | ret(4) | 인자1(ebp+8) | 인자2 ....그런데..
FC3는 RedHat보다 보호기법이 여러개 추가 되었다. 보호기법 FC3 RedHat 랜덤스택 O X 스택더미 O X 아스키아머 O X NX-bit (stack,heap) O X ASLR(address space layout randomization): 주소가 매번 일정하지 않다. FC3에서는 스택에만 적용되있다. StackDummy: 스택사이에 더미(쓰레기값)이 껴있다. ASCII armor: 공유라이브러리의 시작주소가 0x00으로 시작한다. NX(Never eXecute bit): 메모리의 실행권한이 없다. 즉 쉘코드 올려서 공격이 불가능. 추가로 bash의 권한이 다운되었다고 하는데 system함수로 쉘을 획득할 수 있지만 권한이 상승하지는 않는다. exec계열의 함수만 가능하다.FC3를 도전하기전..