정보보안
-
DIMICTF 2017 RIDDLE정보보안/포너블 2018. 5. 21. 00:05
root@goorm:/workspace/JunhoYeo# python riddle_exploit.py [*] Trying first key A [*] Trying first key B [*] FLAG : Ring Setting(AAA-ZZZ): Plain Text(Only Uppercase and space): JUOXDHELILEP LPCFLAG PJPTFLERDXL BHRJLXRQ PK TEILYFAD RF BEQN CV IZOUPK WBC NJXHYOQ HZZCJFSND OG ZZO RTTDOELQAL ZD TSALSJ JBIDL KWMRXFR JZG SCJOMDG QYLTN VWMWCWQ FNH GSMIXJ OWIY PWP QKPXU XSDS WK CHXFMB EEIEFC BMV MHB NWBB ..
-
GOT Overwrite 공부 2정보보안/포너블 2018. 5. 20. 16:16
다른 코드를 공격해보자 http://d4m0n.tistory.com/83 이번에는 위 링크에 있는 D4m0n님의 코드를 공격해보자. 단, GOT Overwrite는 쉬우니까 풀이를 보고 따라하지 않고 직접 풀어봐야지. 공격할 코드 #include int main(void){ char buf[20]; gets(buf); puts(buf); return 0; } 이번에는 VIM을 사용해서 코드를 입력했다. vim over2.c i로 insert mode 열고, 코드를 입력 Esc로 command mode로 나가기 :w로 문서 저장 :q로 문서 닫기 :wq로 4, 5번을 한꺼번에 할 수도 있더라. 컴파일하기 junhoyeo@ubuntu:~/pwn/got-overwrite$ gcc -o over2 over2.c..
-
GOT Overwrite 공부 1정보보안/포너블 2018. 5. 18. 23:25
GOT Overwrite 공부 1 GOT Overwrite란? GOT는 PLT가 참조하는, 특정 함수의 시작 주소를 가진 테이블이다. 이때 GOT 변조를 통해 프로그램에서 호출하려는 함수 대신 다른 함수를 실행하게 할 수 있다. 공격하기 이번에는 s0ngsari님 블로그에 나온 대로 공격하도록 하겠다. 코드가 간단해 보일수록 만만해 보이는 플라시보 효과 취약점이 있는 코드, 한번 실행해 보기 #include int main(){ printf("/bin/sh"); } /bin/sh를 출력하는 코드 over.c이다. junhoyeo@ubuntu:~/pwn/got-overwrite$ gcc -o over over.c -z execstack -fno-stack-protector -m32 junhoyeo@ubun..
-
RTL Chaining 공부 1정보보안/포너블 2018. 5. 18. 08:32
RTL Chaining 공부 1 ROP에 한 발짝 더 RTL 얼른 보고 이번에는 RTL Chaining을 공부하기로~! 이번에도 http://d4m0n.tistory.com/80에서의 D4m0n님 블로그의 설명대로 취약점이 있는 코드를 공격하도록 하겠다. RTL Chaining이란? RTL 기법을 응용하여 함수 여러 개를 연계하여 호출하는 것 공격하기 아래와 같이 실행되도록 만든 다음에... read()로 실행할 명령어를 입력받음 -> bss 영역에 저장 -> system()으로 실행 -> exit()으로 종료하도록 하기 ...실행 흐름을 바꾸는 데 성공했으면 /bin/sh를 입력(전달)해서 쉘 따기 공격할 코드 이전 글과 공격할 코드가 같다. #include #include int main(void){..
-
pwnable.kr 3번 bof : pwntools로 자동으로 브포 때리면서 풀기정보보안/포너블 2018. 5. 17. 21:04
pwnable.kr 3번 bof : pwntools로 자동으로 브포 때리면서 풀기 몇 달 전이였나 블로그에 pwnable.kr 3번 문제에 대한 Write-Up을 올린 적 있다. 구름 ide를 뒤지다 얼마 전 pwntools를 배우면서 짠 이 문제의 exploit을 발견해서 올려두려고 한다. 나라는 늅늅이는 분석을 엄청 못하니까 gdb로 '음 오프셋을 뭘로 해야 할까?^^' 하면서 찾기가 어렵다. 그럴 때는 브루트포싱이 답이다. excessive brute-forcing은 자제하라고 공지에 나와 있으니까 그냥 순수하게 40~59까지만 돌려보자(이미 답을 알고 있으니...) from pwn import * for i in range(40, 60): r = remote("pwnable.kr",..