DreamHack

Web Hacking Advanced

[dreamhack] blind-command

문제분석 & 풀이@app.route('/' , methods=['GET'])def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmdcmd 파라미터로 전송하면 os.system(cmd)가 실행되면서 시스템 명령이 실행되는 루틴이다. cmd 파라미터에 대한 검증이 없어서 command injection을 수행할 수 있는 환경이다. 다만, os.system(cmd) 를 실행한 결과를 응답하지 않는다. 따라서 blind command injection을 ..

Web Hacking Advanced

[dreamhack] blind sql injection advanced

문제분석 & 풀이@app.route('/', methods=['GET'])def index(): uid = request.args.get('uid', '') nrows = 0 if uid: cur = mysql.connection.cursor() nrows = cur.execute(f"SELECT * FROM users WHERE uid='{uid}';") return render_template_string(template, uid=uid, nrows=nrows)uid를 이용해서 select 쿼리를 실행하는 구성이다. uid 파라미터에 대한 검증과 prepare statement와 같은 시큐어 함수가 적용되지않았다. 따라서 uid를 이용해 SQL injec..

System Hacking Advanced

[dreamhack] ssp_001

SSP 개념SSP(Stack Smashing Protector) SSP(Stack Smashing Protector)SSP는 BOF를 방어하기 위한 보호기법 중 하나로 함수를 실행할 때, canary라는 랜덤 값을 스택에 추가하여 BOF로 스택 데이터가 변조됐는지 확인하는 방법이다. canary가 변조된 경우는 스택 데이터가keyme2003.tistory.com ssp_001#include #include #include #include void get_shell() { system("/bin/sh");}void print_box(unsigned char *box, int idx) { printf("Element of index %d is : %02x\n", idx, box[idx]);}voi..

System Hacking Advanced

[dreamhack] Return Address Overwrite

Return Address Overwritevoid get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL);}int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0;}scanf("%s", buf)에서 길이 검증이 없다. 따라서 BOF가 발생한다. BOF 취약점을 이용해서 RET을 get_shell() 주소로 덮으면 쉘을 얻을 수 있다. gdb로 get_shell 주소를 구했다. 다음으로 buf ~ RET 거리를 구해보자. 를 보면 scanf() 호출 전에 [rbp-0x30]를 rax에 넣고 이를 ..

Web Hacking Advanced

[dreamhack] php-1

개념정리PHP Wrapper를 이용한 LFI 취약점을 실습하는 문제다. ○ LFILFI(Local File Inclusion) 취약점은 웹 애플리케이션에서 발생할 수 있으며, 공격자가 악의적인 목적으로 웹 서버의 파일 시스템에 접근하여 중요한 파일을 읽거나 실행할 수 있는 취약점이다. LFI는 주로 웹 애플리케이션에서 파일을 동적으로 로드할 때 발생한다. 이때, 애플리케이션은 파일 이름을 사용자 입력값으로 받아들이는데, 이 입력값에 대한 검증이 제대로 이루어지지 않으면 공격자가 파일 시스템의 다른 파일에 접근할 수 있다. 공격자는 LFI 취약점을 이용하여 애플리케이션의 설정 파일, 암호화된 비밀번호, 데이터베이스 정보 등 중요한 정보를 탈취할 수 있다. 또한 공격자는 원격 코드 실행(RCE) 공격을 수행..

System Hacking Advanced

[dreamhack] basic_exploitation_002

문제분석void get_shell() { system("/bin/sh");}int main(int argc, char *argv[]) { char buf[0x80]; initialize(); read(0, buf, 0x80); printf(buf); exit(0);}read(0, buf, 0x80)에서 길이에 대한 검증을 수행하고 있다. 따라서 일반적인 BOF는 발생하지 않는다. 그렇다면 어떤 취약점이 존재하는 것일까?printf(buf);위 코드에서 Format String Bug 취약점이 발생한다. printf 함수를 사용할 때, 포맷스트링을 지정하지 않고 buf를 1번째 인자로 사용하도록 코드를 작성한 상황이다. 이는 출력함수를 잘못된 방식으로 사용한 경우다. 포맷스..

keyme
'DreamHack' 태그의 글 목록 (8 Page)