본문 바로가기

웹 모의해킹 스터디

(33)
서비스 거부 공격 (Denial of Service, DoS) 공격 종류 DoS 공격이란? : 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격 DoS 공격의 종류 DoS 공격의 종류는 자원 고갈 공격과 취약점 공격으로 나뉜다. 자원 고갈 공격은 내트워크 대역폭이나 시스템의 자원을 소모시키는 형태고, 죽음의 핑, SYN 플러딩, 스머프 공격 등이 있다. 취약점 공격은 특정 형태의 오류가 있는 네트워크 패킷 처리 로직에 문제가 있을 때 공격 대상이 그 문제점을 이용하여 오작동을 유발하는 형태이다. 랜드어택, 봉크/보잉크, 티어드롭 등이 여기에 해당한다. 1. SYN 플러딩 공격 TCP 프로토콜의 3 Way Handshake 연결방식의 문제를 이용한 공격이다. 클라이언트가 SYN만 보내고 아무런 동작을 하지 않는다면 해..
[php/mysql] 마이페이지 구현하기 (+ 개인정보 수정) 구현된 마이페이지 [mypage.php]
[php/mysql] 페이징 구현하기 (메인 페이지) 구현해 놓은 메인 페이지에 페이징 처리를 추가하였다. https://studysteadily.tistory.com/10 [php/mysql] 게시판 리스트 구현하기 (메인 페이지) 페이징 처리는 하지 않고 게시글만 역순으로 출력되게 하였다. [index.php] 게시판 님, 환영합니다. 글쓰기 [index.css] .btn { border: none; background-color: lightgray; border-radius: 5px; height: 25px; color: black; } .colum studysteadily.tistory.com body 밑 php 코드 부분에 아래 코드 추가 $sql = "select * from board"; $result = mysqli_query($db_conn..
[SQL Injection] CTF - SQL Injection Point 4 문제풀이 기억하자. SQL Injection에서는 참/거짓에 따라 달라지는 응답을 확인해야함을. + select 문만 사용 or 사용 금지 주석 사용 금지 마이페이지 쿠키 user에 id가 담겨있는 것을 확인 참인 쿼리를 날렸을 때 결과와 거짓인 쿼리를 날렸을 때 결과가 동일 이럴 땐 db 에러를 유발해보고 에러가 출력되는지 확인 db 에러가 출력되므로 조건이 참일 때 db 에러를 유발시켜 참/거짓의 결과가 다르게 나오도록 하자 qwe' and (select 1 union select 2 where(1=1)) and '1'='1 를 이용해서 1=1 부분에 쿼리를 입력해서 참이면 select 1 union select 2로 구조체가 응답되게 하여 db에러를 유발하고, 거짓이면 select 1이 응답되어 결과가 기존..
[SQL Injection] CTF - SQL Injection Point 3 문제풀이 기억하자. SQL Injection에서는 참/거짓에 따라 달라지는 응답을 확인해야함을. sort라는 파라미터가 있는걸 봐서 order by에 쓰일 것으로 예상됨 sort 값을 1로 줬을 때 2로 줬을 때 확실하다 order by에서 참/거짓을 이용해보자 case when (조건) then (참일 때) else (거짓일 때) end 구문을 사용할 것이다 참일때 (조건을 1=1로 설정) 거짓일 때 (조건을 1=2로 설정) 거짓일 때는 select 1 union select 2 즉, 구조체가 응답이 된 것이니 정렬이 불가하다 그래서 아무 게시물도 나타나지 않은 것이다 아무튼 차이가 아주 확연하다 이제 조건 부분에 sql 문을 넣어 db 부터 추출하면 될 것이다 자동화를 이용하자 import requests i..
[SQL Injection] CTF - SQL Injection Point 2 문제풀이 게시판 검색창에 작성자로 sdf를 검색하면 다음과 같이 파라미터가 전달되는 것을 확인 전달되는 파라미터를 확인했으니 db에서 사용하는 SQL 문을 대략적으로 추측해보면 select * from 테이블 where username like '%sdf%' and ~~~ 이런 식일것 같다. 추측한 sql 문을 이용해보자 option_val에 1=1 and username을 입력하면 select * from 테이블 where 1=1 and username like '%sdf%' and ~~~ 1=2 and username을 입력하면 select * from 테이블 where 1=2 and username like '%sdf%' and ~~~ 확인해보자 option_val에 1=1 and username을 입력했을..
[SQL Injection] CTF - SQL Injection Point 1 문제풀이 사실 푼건 진작인데 기억이 가물가물해가서 정리해본다 기억하자. SQL Injection에서는 참/거짓에 따라 달라지는 응답을 확인해야함을. 마이페이지에 접속해보면 쿠키의 user에 id가 담겨 있는 것을 확인 user에 sdf' and '1'='1과 sdf' and '1'='2를 넣었을 때 info의 placeholder 값이 다른 것을 확인 ==> sqli 취약점 발견 취약점을 찾았으니 어떻게 정보를 빼낼지 생각해야한다. 여기선 error based나 union based는 사용할 수 없으므로 blind로 가야한다. 파이썬으로 자동화 코드를 작성해서 추출해보자. import requests import urllib.parse url = "http://ctf.segfaulthub.com:7777/sqli..
[CSRF] CTF - GET Admin 1 문제풀이 첫번째 방법 마이페이지에서 비밀번호를 수정했을 때 id, info, pw가 파라미터로 넘어가는 것을 확인 Change request method (POST 방식을 GET 방식으로 바꿈) => Copy Url 해서 주소창에 입력했을 때 정보가 수정되는 것을 확인 관리자가 게시글을 열람하면 비밀번호가 변경되는 URL에 접근되도록 img 태그를 작성 (xss 취약점이 존재하는 것은 사전에 확인함) 위 게시글의 URL에 관리자가 접근하도록 유도해서 비밀번호가 변경되게 한 후 관리자 계정으로 로그인하면 플래그 탈취 성공 두번째 방법 비밀번호가 수정되면 수정이 완료됐다는 alert 창이 뜨지 않도록 iframe에 sandbox 속성을 주어 자바스크립트가 실행되지 않게 함 이후 과정은 동일