본문 바로가기
반응형

분류 전체보기87

SQL Injection : Error Based SQL Injection Error Based SQL Injection은 말 그대로 "Error에 Based 된", 즉 고의적으로 오류가 있는 SQL 질의문을 삽입하여 출력되는 에러의 내용을 바탕으로 필요한 정보를 얻는 공격이다. 이때 중요한 것은 문법이 맞지 않는 SQL Query 문을 삽입하게 되면 Compile이 되지 않기 때문에 문법적 에러가 아닌 논리적 에러를 포함한 쿼리문을 삽입해야 한다는 것이다. Error Based SQL Injection에 자주 사용되는 함수를 살펴보면서 사용 방법을 익혀보자. ① Updatexml [syntax] updatexml(xml_target, xpath_expr, new_xml) updatexml 함수는 지정된 xml_target에 xpath_expr의 xpath 표현식과 일치하는 부.. 2021. 11. 4.
Bandit : Level 21 ~ Level 25 [Level 21] 포트 연결 Level 20과 같은 setuid binary 파일이 있는데 그 파일은 $ ./suconnect 형태로 사용하면 localhost의 해당 포트 번호로 연결을 하는 프로그램이다. 해당 포트 번호에 연결해서, 텍스트를 읽어서 bandit20 패스워드랑 일치하는지를 확인하는 프로그램이므로, 해당 포트 번호로 비밀번호를 넘겨줄 필요가 있다. 레벨 14 문제 풀이에서 썼던 nc를 사용하면 된다! 우선 쉘을 두 개 켜주자. 그 후 한 쪽에서는 nc를 listening mode로 열어두고 (거부되는 포트도 있는데 몇 개를 쳐보니 되는 포트가 있었다.) 한 쪽에서는 ./succonnect로 연결해 준다. 왼쪽에서 현재 패스워드를 보내주니, 오른쪽에서 확인을 거쳐 다음 패스워드를 보내주었.. 2021. 11. 3.
Php로 웹 개발하기 : 게시판(1) - Setting & Print List 이번 실습에서는 게시판을 만들어볼 것이다. 기본적으로 게시판 CRUD에다가 파일 업로드, 좋아요, 조회수 표시, 페이징, 검색 등등 꽤 만들 기능이 많아서 게시판 만들기(10)까지 나올 것 같다. 기능도 많고 CSS도 많이 들어갈 것 같아서 먼저 대강 이미지를 그려봤다. 두 번째 게시판 글 세부 내용 사진은 그리기 귀찮아져서 저런 건 절대 아니다. 아무튼 아니다. 게시판 파일을 하나 만들고 Test DB를 구축하자. mysql> CREATE TABLE board ( -> `username` varchar(20) NOT NULL, -> `title` varchar(20), -> `views` int(5) DEFAULT 0, -> `date` char(10), -> `time` char(5), -> PRIM.. 2021. 11. 2.
Bandit : Level 16 ~ Level 20 [Level 16] OpenSSL 이전의 15단계처럼 localhost의 다른 포트에 현재의 비밀번호를 전송하는 것이지만, SSL 암호화를 거쳐야 한다. 우선 openssl 명령어를 살펴보자. 설명을 살펴보면, openssl은 Secure Sockets Layer를 위한 암호화 도구이다. SSL은 인터넷 보안 프로토콜로, User가 Http에 접속할 때와 달리 Https에 접속할 때는 이 암호화된 연결을 거친다. 왜 http보다 https가 안전한지 몰랐는데 URL에 https가 있는 웹사이트는 바로 이 SSL/TSL를 구현한 것이기 때문이었다. 기존 웹에서 주고받는 데이터는 탈취되면 누구나 읽을 수 있었지만, SSL이 생기면서 누군가가 데이터를 가로채더라도 읽을 수 없게 되었다. 쇼핑몰에서 주문을 하고.. 2021. 11. 1.
Php로 웹 개발하기 : 주소 검색(2) 이전 글 : [모의해킹_실습] - Php로 웹 개발하기 : 주소 검색 기능 만들기(1) 주소 검색 결과를 출력하다 보니 문제점이 하나 생겼다. 지금까지는 php에 html을 섞어서 쓰는 게 익숙지 않아서 html 따로 php 따로 사용했는데, 그렇게 하다 보니 검색을 누르면 결과는 다른 페이지로 넘어간 후 떴다. 그래서 같이 쓰는 법을 공부해보았다. [기존] address.html, address.php address.html에서 form으로 받은 값을 address.php에서 출력하는 방식이었다. 이것을 검색하면 결과가 한 화면 안에서 출력되도록 만들자. 결과를 출력할 부분에서 print_result() 함수를 호출하고, 그 함수에서 기존 address.php가 하던 작업을 수행한다. (php는 자바스.. 2021. 10. 31.
Bandit : Level 11 ~ Level 15 이전 글 : [WarGames/Bandit] - Bandit : Level 6 ~ Level 10 [Level 11] Base64로 encoded된 데이터 읽기 base64로 encode 되어 있는 파일을 읽기 위해 base64 -d 옵션을 사용하여 decode 해주었다. 추가로 Base64에 대해 알아보니 인코딩 방식이 흥미로웠다. 우선 A ~ Z, a ~ z, 0 ~ 9, +, /를 0부터 63까지 매칭한 Base64 색인표를 만든다. 그 후 변환하고자 하는 문자의 ASCII 값을 8자리의 2진법으로 나타낸 후, 앞에 6자리만 떼서 다시 10진수로 바꾼 후 만들어놓은 색인표에 해당되는 문자를 쓰는 것이다. 남은 두 자리는 버리는 것이 아니라 뒤의 문자와 합쳐진다. 즉, 세 문자를 이진법으로 바꾸면 2.. 2021. 10. 30.