전체 글 36

CVE-2023-36053 분석

이번 제 27회 해킹캠프 CTF에서 웹해킹 문제에 해당 CVE와 유사한 문제가 출제되었다. 우선 CVE를 이용한 문제는 필자에게는 처음이었고, 대회가 끝나고 실제로 제보하신 스틸리언 윤석찬님의 풀이를 들으며 굉장히 흥미로운 취약점이라 생각되어 가볍게 분석? 공부를 해보았다. https://nvd.nist.gov/vuln/detail/CVE-2023-36053 NVD - CVE-2023-36053 CVE-2023-36053 Detail Modified This vulnerability has been modified since it was last analyzed by the NVD. It is awaiting reanalysis which may result in further changes to the..

1-day 분석 2023.09.08

wolfman 문제 풀이

코드 분석 pw를 입력받고 오직 공백 문자만을 필터링하는 모습 공격 기법 mysql에서 공백 문자 없이 쿼리를 실행하면 syntax error (구문 에러)가 나는 경우가 생긴다 /*예시 쿼리*/ select * from EMPLOYEE where name='Clark'or1=1 /*or1=1 에서 syntax error 발생*/ 이를 우회하기 위해서는 여러 방법들이 있지만 필자는 주석을 사용하였다 mysql 주석에는 #, -- 말고도 /* */를 통해 여러줄의 주석을 작성할 수 있는 방법이 존재한다. 이를 쿼리 중간에 열고 닫게 되면 공백 문자를 사용하지 않아도 정상적으로 실행이 된다. ?pw='/**/or/**/id='admin'/**/and/**/1=1/**/--/**/' 물론 이 방법 이외에도 괄..

orc 문제 풀이

코드 분석 별도의 필터링은 존재하지 않는다. 하지만, result의 pw와 $_GET['pw']의 문자열을 직접 비교하여 맞는 지 확인하는 코드가 존재한다. 이 말은 즉슨 조건문을 참으로 만드는 것이 끝이 아니라 실제 admin의 password를 알아내어야 한다. 공격 기법 이를 알아내기 위해서는 이전 글에서 다루었던 SUBSTR() 함수를 사용하여 admin의 pw와 한 글자씩 매칭하여 맞다면 조건문이 참이 되도록 쿼리를 작성하여야 한다. 이런 식으로 쿼리에 대한 결과가 참인지 거짓인지에 따라 다른 응답을 주는 점을 이용하여 정보를 얻어내는 공격을 Blind SQL Injection이라고 부른다. 우선 admin의 pw 길이를 알아내기 위해 LENGTH() 함수를 사용하여 ?pw=' or LENGTH..

goblin 문제 풀이

코드 분석 ' (single quote), " (double quote), ` (back tick) 을 필터링하는 모습을 볼 수 있다. 또한 id가 guest로 정해져있는데 이 쿼리를 실행하였을 때 id가 admin이어야 한다. 공격 기법 우선 $_GET[no]를 통해 전달받은 값을 문자열로 감싸지 않기 때문에 escape에 대한 걱정은 하지 않아도 된다. 그렇다면 남은 것은 id를 admin으로 조회하도록 하는 것인데, 쿼터가 모두 필터링 되기 때문에 직접적인 문자열 비교는 되지 않을 것이다. 이를 우회하기 위해서는 여러 함수들이 있겠지만 필자는 SUBSTR() 함수와 CHAR() 함수를 사용하여 문제를 풀었다. 우선 mysql의 SUBSTR() 함수는 문자열의 임의의 위치를 추출해주는 함수인데, SU..

cobolt 문제 풀이

코드 분석 지난 문제와 마찬가지로 별다른 필터링은 존재하지 않으나 pw로 입력받은 값을 md5함수에 넣어서 쿼리를 실행한다. 또한 result['id']가 존재하는지만 검사하지 않고 id가 admin인지 검사하고, id가 admin이 아니면 'You are not admin :('이라는 문자열을 출력하는 것으로 보아 prob_cobolt 테이블에는 여러 id가 존재하는 것으로 보인다. 공격 기법 우선 지난 문제와 똑같은 값을 id에 주입해보면 ?id=' or 1=1 -- ' where문의 결과가 참이 되었지만 admin이 아닌 rubiya라는 id가 가장 먼저 조회되어 문제가 풀리지 않는다 이것을 해결하기 위해선 mysql의 LIMIT 을 사용할 수 있다. LIMIT 은 mysql의 select에서 조회..

gremlin 문제 풀이

코드 분석 id와 pw를 입력받아 쿼리를 실행하고 결과값에 id가 있다면 문제가 풀린다. 별도의 필터링은 존재하지 않는다. 공격 기법 다른 테이블을 변조할 수 있는 문자들을 제외하면 별다른 필터링이 없기 때문에 가장 기본적인 sql injection으로 쿼리를 참으로 만들 수 있다. ?id=' or 1=1 -- '&pw=0 이러한 값을 주입하게 되면 $query 변수에 저장되는 값은 "select id from prob_gremlin where id='' or 1=1 -- ' and pw=''" 이런 쿼리가 되어 pw에 어떠한 값을 넣더라도 주석처리 되기 때문에 무조건 참이 되어 문제가 풀린다.

27th Hacking Camp 후기

이번 8월 26~27일 동안 1박 2일로 제 27회 해킹캠프에 발표자로 참여하였고 간단하게 후기를 작성해보고자 한다. (참고로 1일차에 진행되었던 CTF에 대한 문제풀이는 더 좋은 블로그들이 있으니 생략하도록 하겠다) 우선 본인은 해킹캠프를 2023년 2월달에 늦게 알게되었는데 동계에 참여하지 못했어서 이번에 처음으로 참여하였다. 하지만 정말 감사하게도 첫 참가였지만 '26회 해킹캠프 베스트 해커' 김희찬군과 공동 발표를 하여 발표자로서 참여할 수 있었다. 해당 발표는 '악성코드 개발 도전기'라는 주제로, 둘째 날 점심 이후에 예정되어 있었는데 첫째 날과 둘째 날의 앞선 대단한 발표들을 보고 괜시리 긴장이 되어서 점심도 안 먹고 구석에서 발표 연습을 마저 하곤했었다. 😅 발표의 내용을 대략적으로 소개하자..

카테고리 없음 2023.09.04

순천향대학교 제 21회 정보보호 페스티벌 예선전 풀이 및 후기

8월 11일부터 13일 동안 3일에 걸친 yisf 예선전을 처음으로 참가하였다. 점수는 4340점으로 11등을 하여 본선에 진출할 수 있었다. 그럼 바로 풀이를 시작하겠다. Web Magic shop url에 접속을 하면 이렇게 여러 아이템을 살 수 있는 페이지가 나오고, 그 중에서 플래그를 선택해서 구매해보면 이런 페이지가 나온다 burp suite를 사용하여 요청을 잡아보면 이런 식으로 money를 전달하는 것을 볼 수 있는데 money에 값에 아무 것도 없다. 그래서 money의 값을 flag의 값보다 높게 전달을 해보았더니 flag를 얻을 수 있었다 YISF{W0w_Pa4mete4_Man1Pulat10n} Customer Service (해당 문제는 언인텐으로 풀린 문제이기에 해당 풀이는 의도한 ..

카테고리 없음 2023.08.28

Zachary Mathis - Windows Fast Forensic Analysis 강의 후기

지난 4월 19일 서울에서 열린 Secure Korea April 2023 SANS Community Night에 참여하였다. 그날 들었던 강의는 Windows Fast Forensic Analysis 이라는 주제로, Zachary Mathis라는 강사님이 발표를 해주셨다. 맨 앞자리가 비어있길래 바로 앉아 강의를 들었고, 강의는 실시간 통역으로 이루어졌다. 강의 내용을 적어보자면 기존의 Windows 이벤트 로그 분석은 1) 분석하기 어려운 데이터 형식이고 2) 대부분의 데이터가 그냥 noise로서 조사에 유용하지 않기 때문에 매우 길고 지루한 프로세스였다. 강사님께서는 이에 대한 제대로 된 툴이 없는 것 같다고 생각하여 직접 도구를 만드셨다고 한다. (ㄷㄷ) 그 도구는 바로 Hayabusa (송골매)..

디지털 포렌식 2023.05.20