본문 바로가기

분류 전체보기

(31)
LOB #3 cobolt ID : cobolt Passwd : hacking exposed 먼저 파일 목록을 살펴보면, goblin에 다음 level의 seteuid가 걸려있는 것을 확인할 수 있다. goblinl.c를 살펴보면, main 함수에서 gets 함수를 사용해서 버퍼오버플로우 취약점이 있는 것을 확인할 수 있다. ret과의 거리를 확인하기 위해 gdb를 이용해서 main함수를 디버깅하면, 에서 gets함수를 호출하고 있으며, 인자로 %eax=[%ebp-16]을 넘겨주는 것을 확인할 수 있다. 그러므로 ret과 buffer사이의 거리가 16bytes이고, 소스코드에서 버퍼가 16bytes였으므로 dummy값이 없이 모두 버퍼임을 확인할 수 있다. 그림으로 구조를 그려보면, 위와 같이 되며 16(buffer)+4(sfp)..
LOB #2 gremlin ID : gremlin Passwd : hello bof world cobolt에 gremlin 다음 level의 setuid가 걸려있는 것 확인 가능! cobolt.c를 확인하면, strcpy함수를 사용해서 버퍼오버플로우 취약점이 있는 것을 확인할 수 있다. gdb로 main 함수를 디버깅해보면, 에서 strcpy 함수를 호출하는데 인자로 주는 push 값을 보면 %eax=[ebp-16] 인 것을 확인할 수 있다. 즉, ret와 buffer 사이의 거리가 16bytes임을 알 수 있다 (자세한 이유는 LOB #1에 설명해놓음!) 구조를 그려보면, 위와 같이되며, 16(Buffer)+4(sfp)=20bytes만큼을 다른 데이터로 채워주고 ret값이 4byte를 쉘코드 주소로 변경해주면 exploit이 가..
LOB #1 gate ID : gate Password : gate ls -al 명령을 통해 gremlin 파일에 다음 레벨인 gremlin의 setuid가 걸려있는 것을 확인할 수 있다! gremlin.c 소스 코드를 보면, buffer의 크기는 총 256byte이고, strcpy()함수가 사용된 것을 확인할 수 있다 strcpy 함수는 버퍼에 크기를 제한받지 않고 입력받을 수 있기 때문에 버퍼오버플로우 취약점이 존재한다 이걸 통해 exploit 해보자! - main 함수 디버깅 exploit을 하기 위해서 ret와 buffer사이의 거리를 구해야 한다. 에서 strcpy를 호출하고 있으므로 호출 전에 push해준 %eax가 buffer가 될 것이다. 를 통해 %eax에는 [%ebp-256] 값이 들어가 있는 것을 확인할 ..
웹해킹 #4 커맨드 인젝션 1. 커맨드 인젝션 - 이론 - 웹 요청 메시지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격 - 공격 결과 호스트 내부의 명령어 실행 가능 - ‘;’ 는 복수의 명령어 실행하고자 할 때 사용 -> x.x.x.x;cat /etc/passwd -> 패스워드 알게 됨 2. 커맨드 인젝션 - 실습 - 그냥 IP 주소를 입력하여 ping 명령 결과 확인 - 커맨드 인젝션 실습 문제 source 파일을 확인 - shell_exec() 함수를 통해 명령을 수행 중! -> shell_exec 함수와 같이 쉘을 직접 호출하여 명령어를 수행하는 함수를 코드에 사용하면 취약점이 생길 수 있음! - ;ls 입력해보기 - ;cat /etc/passwd 입력해보기 3. 커맨드 인젝션..
웹해킹 #3 SQL 인젝션 1. SQL 인젝션 - 웹 서버 영역의 데이터베이스로 전송되는 SQL 쿼리문을 사용자가 임의로 조작 가능할 때 발생 - 허가되지 않은 정보에 접근하거나 데이터 변조 이론 사례 ① WHERE 구문 우회 $id = $_REAUEST[ ‘id’ ]; $query = “SELECT name, email FROM users WHERE id = ‘$id’;”; - 코드 내에 위와 같은 SQL 쿼리문 코드가 존재함 - ‘or’ 키워드가 삽입되어 WHERE 문의 조건이 항상 참이 되어 모든 사용자의 정보 전달됨 - ID=1인 사용자와 1=1이 무조건 참이므로 모든 사용자의 정보 노출 사례 ② UNION 구문 활용 - UNION은 합집합으로 두 개의 SELECT 구문의 결과를 모두 포함 - ‘#’ : 뒤에 오는 내용 주..
웹해킹 #2 실습 환경 구축 및 버프스위트 사용법 실습 환경 구축 ① 칼리 리눅스 외부 인터넷을 사용하기 위해 칼리 리눅스의 네트워크 - 어댑터1을 NAT 네트워크로 설정해준다. 사설 IP를 자동으로 할당받고, 가상 머신끼리 해당 사설 IP로 통신하기 위해 네트워크 - 어댑터2의 '네트워크 어댑터 사용하기'를 체크 후 호스트 전용 어댑터로 변경! 그리고 처음에 칼리 리눅스 내 네트워크에서 eth0이나 eth1에 사설 IP가 할당되지 않는 경우가 있으므로 따로 파일을 수정하여 IP를 할당해주어야 한다! -> 외부 인터넷과 사설 네트워크 동시 사용을 위해 '/etc/network/interfaces' 파일 수정하여 처음 부팅 시 DHCP 이용하여 eth0, eth1 두 개의 네트워크 어댑터에 자동으로 IP 주소 할당받도록 해준다. vi /etc/networ..
웹해킹 #1 웹 기본 지식 (URL, HTML, SSS, CSS, HTTP, 쿠키와 세션) 1. URL (Uniform Resource Locator) - 파일에 대한 인터넷 상의 고유 주소 - 프로토콜, 웹 서버, 경로, 파일 이름, 쿼리로 이루어짐 http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument ① 프로토콜 : 브라우저가 어떤 프로토콜을 사용해야 하는 지 알려주며, 웹에서 페이지나 파일에 접근할 때 사용되는 메소드 (HTTP 메소드 안에 또 다른 메소드들 존재) ② 웹 서버 : 어떤 웹 서버가 요구되는 지 알려주며, 연결할 파일이 위치한 서버 IP adress를사용할 수도 있음 ③ port : 웹 서버에서 자원을 접근하기 위해 사용되는 입구이며, ‘:’로 포트번호 구분은 표..