본문 바로가기

Linux

Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable) 해결 방법(Solution) 이 문제는 리눅스에서 apt-get 명령어를 사용할 때 발생합니다. 실제 발생 에러 내용입니다.E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it? 저는 python-pip를 설치하려고 했을 때 발생을 했구요.해당 경로로 접근을 했을 때 dpkg파일에 락이 걸려있는 것을 볼 수 있습니다. 이 때 rm명령어를 이용해서 dpkg 파일의 옵션을 이용하면 해결할 수 있습니다.rm /var/lib/dpkg/lock; dpkg --configure -a 더보기
리눅스 특정파일명만 삭제 리눅스와 같은 Text UI환경에서는 특정 파일들만 골라서 삭제하기가 까다롭습니다. rm 명령어와 |grep 의 조합으로 가능할까 싶었는데 find 명령어를 이용하여 가능했습니다. find . -name "*pwnbit.kr*" -exec rm -f {} \; find 명령어를 이용하여 특정 파일명을 검색합니다. 이때 파일명은 보시듯이 정규표현식 사용이 가능합니다. 그리고 -exec옵션을 이용하여 이를 이용하여 실행할 프로그램을 지정해줍니다. 여기서는 파일 삭제를 위해서 rm을 사용했고, {}는 find에 대한 결과 한 줄 마다 rm을 실행하겠다는 의미입니다. 하지만 exec에 대한 인자를 찾지 못 했다는 에러메시지가 발생했는데요. exec에 대한 인자를 찾지 못했다고 나오는 경우에는 -exec rm {.. 더보기
[Ubuntu] "error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory" 에러 환경(Environment) : Ubuntu 14.04 (Voyager) 문제(Problem) : 프로그램 실행 시 공용 라이브러리 libstdc++.so.6을 찾을 수 없는 문제 error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 원인(Cause) : 프로그램 실행에 32비트 라이브러리가 필요 (need 32bit library) 해결 방법(Solution) : sudo apt-get install lib32ncurses5 lib32stdc++6 written by Ubuntu 14.04 (Voyager) 더보기
Bind shell code에서 dup2함수의 역할 Socket을 이용하는 Remote BOF 공격에서 대게 Bind Shell Code를 사용하게 된다. 이 쉘코드가 어떻게 구성되어있고, 왜 Remote BOF에서는 Bind Shell Code를 써야하는지 알아보았다. 1. Bind Shell Code의 구성 우선 통신을 위해 TCP와 같이 구성이 된다. Socket() -> Bind() -> Listen() -> Accept() 또한 표준입출력을 위해 dup2함수와 쉘을 띄우기 위한 execve함수로 구성할 수 있다. 2. Bind Shell Code의 목적 Remote 환경에서는 쉘이 소켓이 종료된 뒤에 떨어지기 때문에 이 통신을 유지시켜줄 필요가 있다. 따라서 Bind Shell Code를 이용하여 포트를 열고 쉘을 받아오는 것이다. 하지만 소켓을.. 더보기
리눅스에서 명령어를 못찾을 경우 리눅스 명령어를 못 찾을 경우 다음과 같은 명령어로 찾아볼 수 있다. find / -name ***** *****에는 찾고자 하는 명령어를 검색하면 되며 대게 /sbin 폴더안에서 찾을 수 있다. 해당 명령을 PATH에 등록시켜 사용해야하므로 env 명령어로 현재 등록되어 있는 환경변수 목록에서 PATH 항목을 찾아본다 현재 PATH항목 부분을 복사해둔 뒤 다음 명령어로 수정해서 추가시켜준다. export PATH=기존에 있던 PATH항목들:/sbin PATH의 각 항목들은 : (콜론)으로 구분해줄 수 있다. 더보기
어셈블리 명령어 상세 - 명령어의 분류 어셈블리 명령어 상세 - 명령어의 분류 ① 데이터 이동 : mov, lea ② 논리, 연산 : add, sub, inc, dec ③ 흐름제어 : cmp,jmp ④ 프로시져 : call, ret ⑤ 스택조작 : push, pop ⑥ 인터럽트 : int 1) 데이터 이동 1. mov (move data) - 형식 : mov SOURCE, DESTINATION - 기능 : SOURCE위치에 들어있는 데이터를 복사하여 DESTINATION위치에 저장. - 원칙 : 메모리와 레지스터(모든 연산은 레지스터에 저장된뒤 이루어진다.) 사이의 데이터이동, 레지스터와 레지스터 사이의 데이터 이동이나 값을 메모리나 레지스터에 대입할 때 사용한다. (SOURCE와 DESTINATION의 크기가 동일해야 한다.) # DESTI.. 더보기
에그쉘 소스(Eggshell code) 에그쉘(Eggshell)이란 딱 봐도 계랸껍질이라는 말이지만 BOF에서는 버퍼의 크기가 쉘코드의 크기보다 작아서 쉘코드를 써넣을 수 없을 때 환경변수에 쉘을 등록해놓고 그 주소값만 가져와서 쉘을 띄울 수 있게 해주는 프로그램이다. 하지만 에그쉘은 환경변수에 등록 후 등록된 주소의 값을 불러오는 프로그램(getegg)을 작성 해야 제대로 쓸 수 있다. 에그쉘 코드 작성 후 한번 실행하여 "EGG"라는 이름으로 쉘코드를 환경변수에 넣어줘야 getegg로 Eggshell의 주소를 가져올 수 있다. 주의할 점 : 에그쉘 소스를 바로 vi 편집기에 붙여넣으려고하면 깨진 상태에서 붙여넣기가 되고 컴파일도 제대로 되지 않는다. 붙여넣기 전에 :set paste 로 설정을 바꿔줘야 제대로 붙여넣기가 되고 컴파일 시에도.. 더보기
어셈블리어 모음(Assembly code) INC(Increase) : 피연산자에 1을 더한다. ZF, OF가 세트될 수 있다. ex) INC reg DEC(Decrease) : 피연산자에 1을 뺀다. ZF, OF가 세트될 수 있다. ex) DEC reg ADD(Add) : Destination에 Source의 값을 더해서 Destination에 저장하는 명령이다. ZF, OF, CF가 세트될 수 있다. ex) ADD eax, 123 => eax 레지스터에 123을 더해서 eax 레지스터에 저장한다. SUB(Subtract) : Destination에 Source에 값을 빼서 Destination에 저장하는 명령이다. ZF, OF, CF가 세트될 수 있다. ex) SUB eax, 123 => eax 레지스터에 123을 빼서 eax 레지스터에 저장.. 더보기