블로그보다가 바이너리 있길래 easy easy.. very easy 다른거 풀다가 안풀려서 풀어봤는데 easy. 그냥 RTL 하면 된다. buf의 위치는 bp-108인데 입력은 130만큼 받는다. 고로 bof가 발생한다.system 함수는 있겠고. 설마 /bin/sh이 있나 했더니 있었다. 고로 간단하게 RTL했다. 먼저 메모리구조는buf(108byte) | sfp(4) | ret(4) | AAAA | 인자 요러케 되고 저렇게 공격하면 된다. 0x8048310 0x804a020 ("/bin/sh") 이것들을 이용해서. 123456789101112131415from pwn import * s = process("./easy") system = 0x8048310cmd = 0x804a020 payload = ..
이 문제는 간단한 bof로 값을 변경하는 문제이다. nc local 서비스 실행과 소켓 통신 오버플로우를 정리하기 위해 라이트 업을 쓴다. 먼저 이 바이너리는 소켓프로그래밍이 되어 있기때문에. while true; do nc -l -p 1234 -e filename; done 출처: http://s0ngsari.tistory.com/entry/ncnetcat-서버-만들기 [s0ngsari] 를 통해 nc서버를 열어줘야 한다. 실제 CTF에서는 열려있기 때문에 상관이 없다. 나는 따로 푸느라 nc서버를 다시 연 것이다. 최근에는 -e옵션이 없어서 따로 설정을 해줘야 한다. 이렇게 서버를 연 후 nc localhost 31337로 연결을 하면, 다른 오류없이 잘 실행이 된다. 이 문제에는 코드가 제공된다. ..
코드게이트 본선에 출제 되었던 betting write-up 이다. file64bit elf 파일이다. 카나리와 nx가 활성화 되어있다. 분석 메인함수 이다. s의 위치는 bp-20h 이다.read로 s에 입력을 0x28만큼 받을 수 있다. 카나리 변수 v24가 bp-8h이니 메모리 구조는 ebpS+etc (24byte) | sfp(8byte) | ret(8byte) 이렇게 된다. 따라서 s를 40만큼 입력할 수 있으니 canary leak이 가능하다. Hi, s가 출력된다. canary의 첫 바이트는 null 이므로 S(bp-20h) 부터 25byte를 입력받으면 저 부분에서 나머지 7byte leak이 가능하다.그 이후 scanf로 v22를 입력받는데 여기서 bof가 가능하다. 참고로helper라는 ..
[LOB] skeleton -> golem id : skeletonpw : shellcoder 먼저 힌트를 보겠습니다. 코드입니다. ret을 제외한 모든부분을 0으로 초기화를 합니다. 환경변수는 물론 buffer와 argv까지 이용을 못합니다. 그래서 다른 방법을 이용해야 합니다. 바로 공유라이브러리를 사용하는 것 입니다. LD_PRELOAD 환경변수에 등록시켜놓으면 실행을 할때 우선적으로 설정한 라이브러리가 참조되기 때문에 라이브러리를 실행할때, 스택 어딘가에 저장이 되고 이를 이용해서 쉘을 따면 됩니다. 먼저 아무것도 없는 코드를 짠 후 컴파일을 해줍니다. 여기서 -fPIC는 독립적인 코드로 만들어 주고 목적파일을 만들고 -shared는 목적파일을 이용해 공유라이브러리를 생성 할 때 사용하는 옵션입니..
[LOB] vampire -> skeleton id : vampirepw : music world 먼저 힌트를 보겠습니다. 코드 입니다. 밑에가 잘렸습니다. 밑에 //ultra argv hunter 이 부분을 잘 보면 argv를 모두 0으로 초기화를 합니다. 그렇다면 쓸 수 있는 스택 공간이 있는지 확인해보겠습니다. 디버깅을 하기위해 tmp폴더를 만들고 옮겼습니다. 쓸 수 있는 스택 공간을 확인 해보겠습니다. 코드와 같이 0으로 다 초기화가 되었는데 마지막 쯤에 0이 아닌 것들이 있습니다. 이 부분이 뭔지 확인해보니, 실행 파일의 경로 이네요. 이 부분을 이용해서 공격하면 될 것 같습니다. argv[0]에 쉘 코드로 심볼릭 링크를 걸어주고 실행하고 저 위치로 ret주소를 변경해주면 될 것 같습니다. 먼저..
[LOB] troll -> vampire id : trollpw : aspirin 코드를 보겠습니다.중요한 부분은 이 부분 인데요. argv[1] 46이 ff이면 안됩니다. 고로 ret주소가 bfff이면 안된다는 것 인데요 그냥 놉 많이 박아서 bffe로 만들어 주면 됩니다. 놉을 10만개 박았습니다. core파일이 생성 되었습니다. 놉 천지 입니다. 저는 주소를 0xbffe82a0으로 잡고 공격을 해보겠습니다.먼저 tmp 파일에 공격을 해보겠습니다. 쉘이 실행되었습니다. 실제 파일에 공격을 해보겠습니다. vampire의 password는 “music world” 입니다.
LOB orge -> troll id : orgepw : timewalker 코드입니다. argc가 2개 여야 하네요 흠.. 환경변수는 초기화를 해주고 argv[1]의 마지막은 bf이니 스택을 이용해야 하고 argv[1]의 길이는 48이상이면 안됩니다. buf는 초기화를 하고 argv[1]도 초기화를 하네요 그럼 딱 하나 남았네요 argv[0]을 이용해서 공격하면 될 것 같습니다. 저번 레벨에서 써먹었던 심볼릭 링크를 이용하면 될 것 같습니다. ln -s troll `python -c 'print "\x90"*98+"\xeb\x11\x5e\x31\xc9\xb1\x32\x80\x6c\x0e\xff\x01\x80\xe9\x01\x75\xf6\xeb\x05\xe8\xea\xff\xff\xff\x32\xc1\x..
[Codegate 2017] babypwn write-up 코드게이트 본선에 가고싶다.. 열심히 준비해서 꼭 본선진출하면 좋겠다. babypwn을 풀면서 소켓 payload 짜는 데 도움이 된 것 같다. 아직 잘 모르겠다 코드게이트2018에서 문제를 풀 수 있을지. 그래도 최선을 다해 준비해야겠다. 먼저 바이너리는 인터넷 상에서 구했다. 파일을 실행하면,\이러한 내용이 출력 된다. 1은 echo이고2는 reverse echo를 해주는 프로그램입이다 3을 입력하면 종료다. fileelf 32bit이다. 분석 메인 함수이다. 포트가 8181이다. 소켓프로그래밍이 되어있다. 빠르게 취약점을 찾아보겠다. first_8048B87 함수를 보겠다. 밑에 함수 3개를 쫘르륵 호출을 하는데 그중에서 두번째가 의심스러워..
- pwnable.tw
- hacking
- fastbin
- SQLi
- stack reusing
- FSB
- pwnable
- rt_sigreturn
- shellcoding
- 해킹
- TLS
- HackCTF
- exit
- pwable
- srop
- glibc
- fastbindup
- oob
- tcache
- overflow
- fsop
- heap
- ebp change
- codegate
- 본선가고싶다
- Total
- Today
- Yesterday