Dev-Dori
지금까지 올라온 글들
-
[ 정보보안 프로젝트 ] 펌웨어 추출하는 방법 (포트미러링)
[ 정보보안 프로젝트 ] 펌웨어 추출하는 방법 (포트미러링)
2021.12.18이번 글에서는 이전 글에서 말했듯이 펌웨어를 추출하는 과정을 설명하도록 하겠습니다. 펌웨어를 추출하는 방법으로는 여러 가지가 존재합니다. 이 글에서는 비교적 쉽게 펌웨어를 추출할 수 있는 포트미러링을 활용하여 펌웨어를 추출해보도록 하겠습니다. 포트미러링이란? 포트미러링이란 공유기 또는 스위치에서 특정 포트를 설정하여 지정된 포트로 다른 포트에서 발생한 모든 네트워크 패킷 혹은 전체 패킷들을 복제하여 전송하는 방식을 포트미러링이라고 합니다. 펌웨어 추출 포트미러링을 활용하기 위해서는 포트미러링을 지원하는 공유기 또는 스위치를 이용해야 하고 또한 펌웨어 업데이트 패킷을 미러링 하여 설치 주소를 받아오기 때문에 펌웨어 업데이트가 존재해야 합니다. 저는 IpTIME의 N604S 공유기를 활용하여 TP-LINK .. -
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 콘솔 접속
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 콘솔 접속
2021.11.27본 과정은 " Tapo C200 IP camera - 하드웨어 분석 " 이후 진행되는 내용입니다. [ 정보보안 프로젝트 | Day - 2 ] Tapo C200 IP camera - 하드웨어 분석 [ 동작 모습 ] 더보기 [ 하드웨어 분해 ] 더보기 Tapo C200 카메라는 다른 카메라에 비해 비교적 쉽게 외부 케이스를 분리할 수 있었다. 상단의 케이스와 하단의 케이스는 나사를 풀지 않고 카메라를 devdori.tistory.com 콘솔에 접속하려면 위와 같이 생긴 USB to UART 모듈을 사용해야 합니다. USB to UART 모듈을 사용하기 위해서는 하드웨어 기판에 존재하는 UART포트와 모듈을 연결해주어야 합니다. 저희는 저번 시간에 UART 포트의 위치를 확인했습니다. 다음 사진이 저번에 확인.. -
[ 정보보안 프로젝트 ] 공유기 펌웨어 환경 구축
[ 정보보안 프로젝트 ] 공유기 펌웨어 환경 구축
2021.11.16이번 글에서는 정보보안 프로젝트를 진행하는 과정에서 공유기에 존재하는 원데이 취약점을 분석하고 구현하기 위해 펌웨어의 환경을 구축하고 CGI 환경을 구현해보도록 하겠습니다. [ 이 글은 Ubuntu 18.04 LTS를 기준으로 작성되었습니다 ] 이번 실습에서는 iptime t24000 공유기의 펌웨어 사용되었습니다. 펌웨어 종류에 따라서 환경 구축 방법이 달라질 수 있습니다. 이점 참고 바랍니다! 기본 환경 구성 $ sudo apt-get update 환경 구축 과정에서 설치해야 하는 파일이 존재하므로 따로 폴더를 만들어서 진행하시는 것을 추전 드립니다. $ mkdir iptime_t24000 $ cd iptime_t24000 iptime 펌웨어는 지금 보이는 url에서 설치하실 수 있습니다. 이 글에서.. -
Javascript Prototype Pollution
Javascript Prototype Pollution
2021.11.13프로토타입(prototype) 개념 더보기 여기서는 프로토타입을 자세하게 설명하기보다는 Prototype Pollution을 이해하기 위한 간단한 지식만을 설명하겠습니다. 자세하게 알고 싶은 분은 하단의 링크를 참고하세요! 프로토타입(prototype) 이란? 일반적인 의미로 프로토타입이란 시제품, 견본 등과 같은 의미로 원래의 형태 또는 표준이라는 의미를 가집니다. 즉, 자바스크립트에서 프로토타입은 자신을 만들어낸 객체의 원형을 프로토타입이라고 하고 Java나 php에서 말하는 class가 바로 자바스크립트의 프로토타입과 동일한 의미일 것입니다. 프로토타입(prototype) 이해를 돕기 위해 게임에서 사용하는 다음과 같은 world 함수가 있다고 가정하겠습니다. function world(name,j.. -
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 하드웨어 분석
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 하드웨어 분석
2021.11.07[ 동작 모습 ] 더보기 [ 하드웨어 분해 ] 더보기 Tapo C200 카메라는 다른 카메라에 비해 비교적 쉽게 외부 케이스를 분리할 수 있었다. 상단의 케이스와 하단의 케이스는 나사를 풀지 않고 카메라를 들어 올리기만 하면 내부 기판에 접근할 수 있었다. 상부를 완전히 분리하기 위해 연결된 포트들을 분리하고 3개의 나사를 풀어야 한다. 포트3개와 나가3개를 분리하면 다음과 같이 상부를 분리할 수 있고, 추가로 상부에 존재하는 나사를 분리해주면 기판을 분리할 수 있다. 위 과정을 거치고 기판을 당기면 다음과 같은 기판을 얻을 수 있다! [ 하드웨어 세부분석 ] 더보기 [ 프로세서 ] CPU: 500MHz :rx5281 prid=0xdc02 [ WIFI 칩셋 ] [ UART Pads ] [ Storage .. -
[ 블록체인을 활용한 NFT 개발 | Day - 1 ] 개발에 필요한 필수 개념정리
[ 블록체인을 활용한 NFT 개발 | Day - 1 ] 개발에 필요한 필수 개념정리
2021.11.03NFT(non-fungible token) : '대체불가토큰’ 혹은 ‘대체불가능토큰’이라고 불리며 블록체인 기술을 바탕으로 만들어진 가상자산이라는 점에서는 비트코인과 비슷하지만, 비트코인이 현실의 화폐처럼 누구나 통용할 수 있게 만들어진 것과 달리 NFT는 각각의 디지털 자산이 고유한 인식값을 담고 있다. -
[Lord of SQL Injection] assassin 15번 풀이
[Lord of SQL Injection] assassin 15번 풀이
2021.10.17[ 문제 접근 ] 1. get방식으로 pw를 입력받고 입력받은 pw를 쿼리의 like 구문안에 넣고 있다. 2. 싱글쿼터를 필터링하고 있다, 즉 like 절을 거짓으로 만든 후 새로운 쿼리를 만드는게 불가능하다. => like를 통해서 비교를 하고 있다, like는 와일드카드를 통해 패턴을 만들 수 있다. 1. %abc : abc로 끝나는 문자열 2. %abc% : abc라는 문자가 어딘가에 존재 3. abc% : abc로 시작하는 문자열 4. _abc : abc 앞에 특정한 한글자가 존재함 5.. a_bc : a와 b사이에 어떤 한글자가 존재함 [ % 는 여러개의 문자를 대체 , _ 는 단일 문자를 대체 ] [ 문제풀이 ] 더보기 : ?pw=902EFD10 우선 _ 를 사용해 문자열의 길이를 먼저 파악.. -
[Lord of SQL Injection] giant 14번 풀이
[Lord of SQL Injection] giant 14번 풀이
2021.10.17[ 문제 접근 ] 1. if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) : shit에 존재하는 \n \r \t를 필터링한다 2. shit을 get방식으로 입력을 받는데 질의문이 서로 붙어있고 가운데 우리가 입력한 shit가 들어간다. =>방법 : shit에 1번 이외의 공백을 넣어주어 질의문 형식을 맞춰준다. https://devdori.tistory.com/39 [SQL Injection] 공백 우회방법 (WHITE SPACE) SQL Injection 공격시 공백 문자 필터링시 우회 방법 줄바꿈 (Line Feed) [ \n ]: %0a 탭 (Tab) [ \t ]: %09 수직탭 (vertical tab) [ \v ] : %0b 폼피드 (form feed) [ \f ].. -
[SQL Injection] 공백 우회방법 (WHITE SPACE)
[SQL Injection] 공백 우회방법 (WHITE SPACE)
2021.10.17SQL Injection 공격시 공백 문자 필터링 우회 방법 줄바꿈 (Line Feed) [ \n ]: %0a 탭 (Tab) [ \t ]: %09 수직탭 (vertical tab) [ \v ] : %0b 폼피드 (form feed) [ \f ] : %0c 캐리지 리턴 (Carriage Return) [ \r ] : %0d 주석 : /**/ 괄호 : ( ) 더하기 : + -
[Lord of SQL Injection] bugbear 13번 풀이
[Lord of SQL Injection] bugbear 13번 풀이
2021.10.17[ 문제 접근 ] 1. if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe"); 1번에서 substr, ascii, or, and ,like,= 문자열 그리고 공백을 모두 필터링하고 있다 2. 2. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) 쿼리질의 결과 admin의 pw와 사용자가 입력한 pw가 같을 경우 solve시켜줌, 이쯤이면 다들 blindsqlinjection인거 유추하실 수 있을꺼라고 생각합니다. =>방법 : 기존에 작성한 코드를 응용하고 기존에는 like를 사용했지만 like를 필터링 하고 있으므로 like를 대체할 또 다른 방법을 찾아서 적용하면 풀.. -
[Lord of SQL Injection] darkknight 12번 풀이
[Lord of SQL Injection] darkknight 12번 풀이
2021.10.17[ 문제 접근 ] 1. if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); , if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); 1번에 2구문을 통해서 싱글쿼터, substr,ascii, = 을 모두 필터링하고 있다 2. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) 쿼리질의 결과 admin의 pw와 사용자가 입력한 pw가 같을 경우 solve시켜줌, 즉 blind sqlinjection 사용을 유추 =>방법 : 단순하게 1번에서 필터링하는 모든 것을 우회해서 기존과 같이 blind sqlinjection을 하면 구할 수 있다! *힌트 : ord, like.. -
[MySQL]문자열 자르기 함수 (LEFT, MID, RIGHT, SUBSTR, SUBSTRING)
[MySQL]문자열 자르기 함수 (LEFT, MID, RIGHT, SUBSTR, SUBSTRING)
2021.10.17설명 MySQL에서 문자열의 일부분을 가져오는 방식으로 3가지가 존재한다. 1. LEFT : 문자열의 왼쪽을 기준으로 지정한 갯수 만큼 문자열을 가져오는 함수 2. MID, RIGHT, SUBSTR : 문자열의 시작지점을 지정하고 지정한 갯수만큼의 문자를 가져오는 함수 3. RIGTH : 문자열의 오른쪽을 기준으로 지정한 갯수 만큼 문자열을 가져오는 함수 사용방법 LEFT 함수 LEFT(문자열, 가져올 길이 값); #============================= > select LEFT("HELLO WORLD",7); +-----------------------+ | LEFT("HELLO WORLD",7) | +-----------------------+ | HELLO W | +----------.. -
[Lord of SQL Injection] golem 11번 풀이
[Lord of SQL Injection] golem 11번 풀이
2021.10.17[ 문제 접근 ] 1. if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); : or,and,substr,= 문자열을 필터링함 2. if($result['id']) echo "Hello {$result[id]}"; : id가 존재하면 Hello를 띄워줌 3. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); : 질의결과의 pw가 우리가 입력한 pw와 같을 경우 solve 시켜줌 => blindsqlinjection 사용해야 함을 유추 가능 =>방법 : or, and를 우회, 기존에 substr대신에 한글자씩 비교할 수 있는 함수를 사용 => = 대신 다른 방식으로 비교하.. -
[Lord of SQL Injection] skeleton 10번 풀이
[Lord of SQL Injection] skeleton 10번 풀이
2021.10.17[ 문제 접근 ] 1. 이번 문제는 쿼터나 공백 그리고 특정 문자에 대한 필터링이 없다 2. 기존 문제와의 차이는 뒤에 and 1=0 이 붙어있다. 3. if($result['id'] == 'admin') solve("skeleton"); : 쿼리 질의 결과 id가 admin인 경우 solve 시켜준다. => 방법 : and 1=0 부분이 거슬리지만 이걸 무시하게 만드는 방법을 생각해본다. https://devdori.tistory.com/20 [Lord of SQL Injection] cobolt 2번 풀이 [ 문제접근 ] 1. 쿼리 : id와 pw파라미터가 존재하고 pw를 md5 암호화, 이를 통해 DB를 조회한다 2. $_GET[id], md5('{$_GET[pw]}') : GET방식을 통해서 id.. -
[Lord of SQL Injection] vampire 9번 풀이
[Lord of SQL Injection] vampire 9번 풀이
2021.10.17[ 문제 접근 ] 1. $_GET[id] = str_replace("admin","",$_GET[id]); : 우리가 입력한 id에 admin이라는 문자열을 지워버리고 있다. 2. if($result['id'] == 'admin') solve("vampire"); : 쿼리질의 결과 id가 admin인 경우 solve 시켜준다 => 방법 : admin이라는 문자열이 지워졌을 때 admin을 만드는 방법을 생각해본다. [ 문제풀이 ] 더보기 : ?id=adadminmin 정답과 같은 방식으로 적어주면 adadminmin 녹색 부분이 사라지게 된다. 따라서 admin이라는 문자열이 완성되게 된다. "VAMPIRE Clear!" 가 나타났다! 정답! 이제 다음 스테이지로 넘어가도록 하자 -
MIPS와 ARM의 차이점
MIPS와 ARM의 차이점
2021.10.17ARM과 MIPS은 모두 RISC 개념을 사용하는 CPU이긴 하지만 굉장히 큰 차이가 존재한다. ARM과 MIPS에 대한 설명은 이전 글을 참고하길 바란다. https://devdori.tistory.com/29 ARM 아키텍처 (ARM architecture) ARM이란? Advanced RISC Machines의 약자로 세계에서 가장 광범위하게 사용되는 CPU 체계의 한 종류로 RISC라는 명령어 체계를 이용하는 프로세서이고 주로 사물인터넷, 모바일 안드로이드, 랩탑, 인터넷 devdori.tistory.com https://devdori.tistory.com/30 MIPS 아키텍처 (MIPS architecture) MIPS란? Microprocessor without Interlocked Pipe.. -
MIPS 아키텍처 (MIPS architecture)
MIPS 아키텍처 (MIPS architecture)
2021.10.17MIPS란? Microprocessor without Interlocked Pipeline Stages의 약자로 MIPS Technologies에서 개발하였고, ARM과 같은 RISC 기반의 명령어 집합 체계를 사용한다. 특징으로는 RISC 답게 단순하고 구조화된 명령어 구조를 가지며, 컴파일러의 성능에 의존하는 경향이 있다. MIPS 명령어 체계 MIPS 명령어 체계는 3가지 종류의 명령어로 구성되어 있다. 들어가기에 앞서 opcode라는 개념에 대해서 알아야 할 필요가 있다. opcode는 해당 명령어가 실행할 연산의 종류를 정의한다. R type: c = a + b와 같은 연산을 할 때, 2개의 레지스터 값을 이용하여 연산을 한 다음, 다른 레지스터 하나에 연산한 값을 기록한다. 이 때 연산을 하는.. -
ARM 아키텍처 (ARM architecture)
ARM 아키텍처 (ARM architecture)
2021.10.17ARM이란? Advanced RISC Machines의 약자로 세계에서 가장 광범위하게 사용되는 CPU 체계의 한 종류로 RISC라는 명령어 체계를 이용하는 프로세서이고 주로 사물인터넷, 모바일 안드로이드, 랩탑, 인터넷 모뎀 디지털카메라, 닌텐도 등 임베디드기기에 많이 사용되고 있다. 용어정리 ARM 아키텍처는 명령어, 레지스터 구조, 메모리 구조 등의 프로세스 기본구조와 동작원리에 대한 정의를 의미하고 ARM 아키텍처에 따라 구현한 processor의 핵심 부분을 ARM core라고 한다 ARM프로세서의 특징 1. 전력소모가 적음 (작은 다이로 설계) 2. 가격에 민감하기 떄문에, 속도가 느린 저자의 메모리 소자를 사용 3. 명령어가 간단 4. 32비트 단위의 명령어 구조 ARM 아키텍처 ARM아키텍.. -
[ 정보보안 프로젝트 ] CVE 분석 및 1 - Day 취약점 구현
[ 정보보안 프로젝트 ] CVE 분석 및 1 - Day 취약점 구현
2021.10.16IP Camera [ CVE-2020-26762 ] ( IP Camera ) - Stack Buffer Overflow 더보기 □ 개요 취약점 종류 영향 심각도 CVSS 점수 CVE ID Stack buffer overflow 임의 명령 실행 HIGH 9.8 CVE-2020-26762 □ 설명 Edimax IP-Camera IC-3116W(v3.06) 및 IC-3140W(v3.07)에서 GET에 대한 인증 미흡으로 공격자가 조작된 코드삽입이 가능, 이로인해 doGetSysteminfo()에서 stack buffer overflow가 발생 □ 영향을 받는 제품 제품 영향 받는 버전 환경 Edimax IP-Camera IC-3116W v3.07 linux [ CVE-2020-7848 ] ( IP Camera.. -
[ 정보보안 프로젝트 ] 주제 선정 및 계획
[ 정보보안 프로젝트 ] 주제 선정 및 계획
2021.10.16[ 프로젝트 소개 ] 이 프로젝트는 우리 학교 졸업생 선배와 함께, 정보보안을 주제로 진행하는 프로젝트로 기간은 10/1~11/26까지 총 56일간 진행하며 11/27일 최종 발표회를 통해 그동안의 성과를 발표하는 것으로 마무리되는 프로젝트입니다. [ 주제 선정 ] 프로젝트와 관련된 다양한 주제가 제시되었지만 그중에서 하드웨어와 관련된 취약점을 분석해보고 싶었기에 이번 프로젝트 주제로 " IoT Device 취약점 분석 "을 선정하게 되었습니다. [ 대상 선정 ] IoT Device 취약점 분석이라는 대주제를 잡고 프로젝트를 진행할 대상으로 "IP 카메라와 공유기"를 선정하였습니다. [ 진행 계획 ] 1주 ~ 2주 : WBS 작성 및 해당 프로젝트와 관련된 사례 & 취약점 조사 3주 ~ 4주 : 선정한 .. -
[Lord of SQL Injection] troll 8번 풀이
[Lord of SQL Injection] troll 8번 풀이
2021.10.13[ 문제접근 ] 1. if(preg_match("/admin/", $_GET[id])) exit("HeHe"); : 이 부분에서 admin을 필터링 하고 있다. 2. if($result['id'] == 'admin') : 쿼리질의 결과 id가 admin인 경우 solve시켜준다 =>방법 : preg_match에 대해서 잘 생각해본다! [ 문제풀이 ] 더보기 : ?id=ADMIN preg_match() 함수는 해당 문자열에서 전달받은 정규 표현식과 일치하는 패턴을 검색하는 역할을 한다. 정규 표현식 리터럴을 작성할 때 다음과 같은 플래그를 사용하여 기본 검색 설정을 변경할 수 있다. 다시 문제를 보면 preg_match(" /admin/i " ...)가 아닌 preg_match(" /admin/ " ..... -
[Lord of SQL Injection] orge 7번 풀이
[Lord of SQL Injection] orge 7번 풀이
2021.10.12[ 문제접근 ] if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); 1. 이번에도 위의 조건을 통해 문자 and 또는 or라는 문자가 들어갔을때 필터링을 하고 HeHe를 출력 2. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) : 쿼리문 질의결과의 pw와 사용자가 입력한 pw가 같을때 solve 시켜줌, 즉 우리는 pw를 구해야한다 => 방법 : 4번(orc) 문제를 푸는 방식과 6번(darkelf)를 풀때 사용한 방식을 응용 4번 orc : https://devdori.tistory.com/22 [Lord of SQL Injection] orc 4번 풀이 [ 문제접근 ] 1. 쿼리 : id는 admin으로 고정.. -
[Lord of SQL Injection] darkelf 6번 풀이
[Lord of SQL Injection] darkelf 6번 풀이
2021.10.12[ 문제접근 ] if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); 1. 이번 문제에서는 위의 조건을 통해 문자 and 또는 or라는 문자가 들어갔을때 필터링을 하고 HeHe를 출력 2. if($result['id'] == 'admin') solve("darkelf"); : 쿼리문 질의결과의 id가 admin일 경우 solve 시켜줌 => 방법 : and와 or를 대체할 다른 문자를 사용 [ 문제풀이 ] 더보기 : ?pw='||id='admin 이번 문제에서는 단순히 문자 and와 or을 의미하는 기호를 사용해서 우회할 수 있었다. 여기서는 or을 우회하기 위해 || 만 사용했지만, 만약 and를 사용하고 싶다면 아래와 같이 사용하면 된다. or 연산자 : ||.. -
[Lord of SQL Injection] wolfman 5번 풀이
[Lord of SQL Injection] wolfman 5번 풀이
2021.10.12[ 문제접근 ] if(preg_match('/ /i', $_GET[pw])) exit("No whitespace ~_~"); 1. 위에 적혀있는 조건문을 분석해보면 whitespace가 입력되면 No whitespace를 띄움 > 화이트스페이스(whitespace)란? :: 공백형태로 된 문자형태(스페이스, 탭, 줄바꿈 등) 2. if($result['id'] == 'admin') : 이 조건문을 통해 쿼리문 질의결과의 id가 admin일 경우 solve("wolfman"); 시켜줌 => 방법 : whitespace를 우회하여 아이디를 admin으로 바꿔준다 [ 문제풀이 ] 더보기 : ?pw='or%0aid='admin 이번 문제에서는 공백을 필터링하고 있기 때문에, 우리는 공백을 대신하여 사용할 수 있.. -
[Lord of SQL Injection] orc 4번 풀이
[Lord of SQL Injection] orc 4번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id는 admin으로 고정되어 있고 pw가 존재, 이를 통해 DB를 조회한다 2. $_GET[pw] : GET방식을 통해서 pw를 입력을 받는다 3. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) : DB 조회결과의 pw와 우리가 입력한 pw가 같아야 solve("orc"); 시켜줌 => 이 문제에서 우리는 admin의 pw를 알아내야함4. 로그인에 성공시 Hello admin을 출력시켜줌 =>방법 : BlindSqlinjection을 통해 pw를 알아내야함 > pw를 한글자씩 비교하고 Hello admin 출력으로 참,거짓을 판별* 힌트 : length(문자열), substr(문자열, 시작할 지점, 자를 개수), ASCII.. -
[Lord of SQL Injection] goblin 3번 풀이
[Lord of SQL Injection] goblin 3번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 no파라미터가 존재하고, 이를 통해 DB를 조회한다 2. $_GET[no] : GET방식을 통해서 no를 입력을 받는다 3. 5,6번 줄에서 $_GET[no] 을 통해 입력받은 데이터에 ' , " 를 검사하고 필터링함 4. if($result['id'] == 'admin') : 질의 결과 id가 admin일 경우 solve("goblin")을 시켜줌 => 방법 1 : id에 admin을 문자열 인코딩을 통해 입력 => 방법 2 : id에 admin이라는 문자열을 내장함수를 사용해 입력 [ 문제풀이 ] 더보기 지금까지 문자열을 넣을때 사용했던 방식인 '문자열'을 사용해서 문자열을 넘겨주려 했으나, ' " 을 필터링하고 있다. 따라서 우리는 기존방식이 아닌 다른 방식으로.. -
[Lord of SQL Injection] cobolt 2번 풀이
[Lord of SQL Injection] cobolt 2번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 pw파라미터가 존재하고 pw를 md5 암호화, 이를 통해 DB를 조회한다 2. $_GET[id], md5('{$_GET[pw]}') : GET방식을 통해서 id와 pw를 입력받고 pw는 md5암호화 3. if($result['id'] == 'admin') : 쿼리문 질의 결과의 id가 admin일 경우 solve 시켜준다 > 방법 1) md5를 우회해서 입력 > 방법 2) id에서 admin을 입력 후 주석처리하여 뒤에 존재하는 조건을 무시 [ 문제풀이 ] 더보기 : ?id=admin%27%23 정답1은 주석을 활용한 방법이다. ?id=admin'# admin뒤에 '를 붙여 문자열을 탈출하고 #을 적어줌으로써 뒤에 존재하는 쿼리를 모두 주석처리할 수 있다. 하지만 ?.. -
[Lord of SQL Injection] gremlin 1번 풀이
[Lord of SQL Injection] gremlin 1번 풀이
2021.10.10[ 문제접근 ] 1. 쿼리 : id와 pw파라미터가 존재하고, 이를 통해 DB를 조회한다 2. $_GET[id], $_GET[pw] : GET방식을 통해서 id와 pw를 입력을 받는다 3. if($result['id']) solve("gremlin"); : DB에 id와 pw가 일치하고 그 결과가 참일경우, 즉 쿼리 질의결과 참인경우 solve(gremlin)를 시켜준다 => 정리 : 우리는 쿼리문을 통한 질의에서 항상 참을 반환하도록 하면 된다 [ 문제풀이 ] 더보기 : ?id=0&pw='1'or'1 select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}' {$_GET[id]}와 {$_GET[pw]} 자리에 우리가 입력한 값이 들어.. -
[ Centos7 ] 해상도 설정
[ Centos7 ] 해상도 설정
2021.05.181. 부트로더인 grub 파일에 접근한다 $ sudo vi /etc/default/grub 2. grub 설정 편집 위와 같이 GRUB_CMDLINE_LINUX에 vga=792 추가 아래 표를 참고하여 792대신 자신이 원하는 값으로 바꾸면 됩니다. * 16진수로 값을 넣을 경우 0x 를 앞에 붙여서 추가 * 3. grub 파일 업데이트 $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg 3. 리눅스 재부팅 $ reboot -
[x86] 자주 사용되는 레지스터와 어셈블리 명령어
[x86] 자주 사용되는 레지스터와 어셈블리 명령어
2021.03.26[1] 어셈블리 ( Assembly ) 가 뭐야? 어셈블리는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어 ( Low Level language)로 0과 1의 이진수를 사람이 알아보는게 한데 이를 보완하기 위해 나온게 어셈블리다. 사람이 일상 생활에서 사용하는 자연어에 가깝게 1~6개의 문자로 기호화해서 나타낸 언어이다. - 고급언어 : 사람이 이해하기 쉽게 작성된 프로그래밍 언어로 컴퓨터에 대한 전문적인 지식이 없어도 저급언어에 비해 배우거나 다루기 쉽고 가독성이 좋은 사용자 중심의 언어를 말한다 (ex: C, JAVA, C++ ... ) - 저급언어 : 고급언어에 비해 이해하기 어렵고 사용하기 불편하지만 속도가 빠르고 컴퓨터가 처리하기에 좋은 컴퓨터 중심의 언어를 말한다 (ex: 기계어,..