전체 글
-
LOS - zombie_assassin / level 17문제 풀이/Lord Of SQL 2024. 7. 9. 20:10
문제풀이 과정 $_GET['id'] = strrev(addslashes($_GET['id'])); $_GET['pw'] = strrev(addslashes($_GET['pw'])); id 와 pw값에 addslashes가 적용되는 것을 알 수 있다 addslashes 함수는 ' " Null 값에 대해 \를 붙혀 문자열로 바꿔주는 함수이다 예를 들어 id='를 입력하면 \'로 입력이 됨을 알 수 있다 또한, strrev는 들어온 값을 뒤집어 들어가게 된다 즉, id=a'&pw=b를 입력하면 다음과 같은 결과가 나오게 된다 addslashes 함수를 이용하여 싱글쿼터를 문자화 시켜 빠져나온 뒤 b에 injection을 시도하면 된다 즉, 싱글쿼터인 ' 뿐만 아니라 더블쿼터 " 도 역슬래쉬가 붙기 때문에 ..
-
-
-
LOS - succubus / level 16문제 풀이/Lord Of SQL 2024. 7. 1. 19:24
문제 풀이 과정 if(preg_match('/\'/',$_GET[id])) exit("HeHe"); if(preg_match('/\'/',$_GET[pw])) exit("HeHe"); $query = "select id from prob_succubus where id='{$_GET[id]}' and pw='{$_GET[pw]}'"; 여기서 id와 pw에서 싱글쿼터를 필터링 하고 있어 id와 pw를 자체적으로 나올 수는 없다 하지만 여기서 id와 pw를 연속적으로 받고 있으므로 \ 를 통해 우회할 수 있다 ?id=\&pw=a select id from prob_succubus where id = '\' and pw='a' 이런식으로 \'으로 인해 싱글쿼터가 문자열로 인식을 하게 되어 'and pw..
-
LOS - assassin / level 15문제 풀이/Lord Of SQL 2024. 7. 1. 19:17
문제풀이 과정pw에 값을 집어넣을 수 있으나 ' 즉 싱글쿼터를 필터링 중이라 해당 구문을 빠져나오지 못한다 하지만 pw를 기준으로 id값을 불러오고 불러온 값이 admin이면 되므로 직접 검색해서 찾는 방법을 사용한다 검색을 이용하여 풀 수 있는 방법은 여러가지가 있는데, 그 중 % / _ 와 같은 와일드 카드를 사용해서 문제를 해결한다 ex)?pw=a% => a로 시작하는 모든 문자열?pw=%a => a로 끝나는 모든 문자열?pw=%a% => a가 중간에 포함되는 모든 문자열 ?pw=_ => 1자리?pw=__ => 2자리?pw=a__% => a로 시작하고 3자리 이상인 문자열 이 방법을 사용해서 길이를 알아내고 문자열을 유추한다 하지만 여기서 조심해야 할 것이 검색을 시도할 때 DB에 저장되어 있는 모..
-
LOS - giant / level 14문제 풀이/Lord Of SQL 2024. 6. 29. 17:33
문제풀이 과정 if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; shit에 / / \n / \r / \t /가 필터링 됨을 알 수 있다 결국 shit에 공백 값을 넣어 select 1234 from prob_giant where 1를 만들어야 하기 때문에 공백 우회가 필요하다 \v : vertical tab\f : form feed 둘 다 수직으로 탭을 사용하지만 차이점이 있다\v는 수직으로 탭을 사용하지만 앞에 공백이 없고\t는 앞에 공백을 채운다 # \v testprint("Hello\vWorld")# Hello# World..
-
LOS - bugbear / level 13문제 풀이/Lord Of SQL 2024. 6. 29. 17:16
문제풀이 과정blind sql injection 방식을 통해 bit masking을 하여 해결한다 pw에 ' / substr / ascii / = / or / and / / like / 0x를 필터링 중이므로각각 " / mid / in / || / %26%26으로 우회한다 정답더보기?pw=52dc3991코드# LOS - bugbearimport requestsurl = "your url"cookie = {"PHPSESSID" : "your session"}user = "admin"def find_length(url, cookie, user): i = 1 while True: params = f"?no=1%09||%09id%09in%09(%22{user}%22)%09%26%26%0..
-
WANI CTF - 2024대회/2024 2024. 6. 28. 19:25
일본 오사카 대학 CTF 동아리 Wani Hackase가 주관하는 WANI CTF에 참가하였다. MISC / Web / System / Forensics / Crypto / Reversing / Pwnable 로 구성되어 있으며 Web 위주의 문제를 해결하였다.POWclient localStorage에서 "pow_progress"가 증가하여 표시가 됨 해당 값을 CryptoJS.SHA256을 이용하여 해시를 10번 진행하고 0xFFFFFF00이랑 비트 연산을 하여 값을 비교 또한 array []로 저장하여 JSON.stringify를 사용하여 json타입으로 변환 후 /api/pow로 보내게 된다. 따라서 해당 값을 찾아 array로 만든 후 데이터를 전송하면 된다. 여기서 값을 하나 씩 보내면 너무 ..