웹해킹(77)
-
g00gle1 풀이
문제를 열어보니 구글폼 하나가 보입니다 선택지가 두 개 있는데, 둘 다 긍정이라 그냥 아무거나 눌러서 제출하려 했습니다 그러나 경고 표시로 "정확히 0개의 옵션을 선택해야 합니다"라고 뜨네요 개발자 도구에 들어가서 코드를 살펴보겠습니다 코드 전체를 보기에는 양이 좀 많으므로, 우선 script 부분만 쭉 살펴보겠습니다 FB_PUBLIC_LOAD_DATA 안에 "Do you want flag?", "yes", "sure" 등 설문지에서 봤던 문자열이 등장합니다 어떤 값들이 있을까 쭉 살펴보고 있는데..... FLAG가 보입니다..? 우선 제출부터 바로 해줬습니다 아마 JS 조작으로 숨겨진 답을 만들어 놓으신 것 같은데... 문제 점수가 50점인걸 보면 다른 풀이 방법이 있기라도 한건지...?? 잘 모르겠습..
2024.02.26 -
old-35 풀이
폰 번호를 입력하는 폼이 하나 있습니다 코드부터 확인해 보겠습니다 SQL Injection 문제인 것 같네요 preg_match()로 *, /, =, select, -, #, ;, admin을 필터링하고 있습니다 그리고 id의 길이가 5 이상이면 안된다고 되어있네요 문제 해결 조건은 isAdmin의 ip와 제 PC의 IP가 동일해야 한다고 되어있습니다 "insert into chall35(id,ip,phone) values('{$_GET['id']}','{$_SERVER['REMOTE_ADDR']}',{$_GET['phone']})" 위 쿼리에서 id에는 길이 제한이 있으므로 phone에 값을 넣는 것이 좋아 보입니다 (메인 페이지에 있는 입력란이 phone이기도 하고요) 문제를 풀기 위해 필요한 데이터..
2024.02.19 -
old-41 풀이
파일 업로드 폼이 만들어져 있습니다 https://www.php.net/manual/en/function.error-reporting.php PHP: error_reporting - Manual I always code with E_ALL set.After a couple of pages of I made this function to make things a little bit quicker. Unset values passed by reference won't trigger a notice. www.php.net 코드 상단 부분에 error_reporting()이라는 함수가 있어서 구글링을 해봤습니다 ini_set()과 함께 쓰이며, 에러 처리를 할 때 에러 문구와 파일 경로를 출력해 주는 역할을 한..
2024.02.17 -
old-44 풀이
노란색으로 적힌 주석을 보면 ls 명령어를 실행하라고 되어있습니다 문제 코드를 보면 id를 POST로 받아오고, 5글자까지만 사용한다고 합니다 system() 함수 안에 들어있는 "echo 'hello! " 문자열을 출력하고, 그 뒤에 '|'ls를 추가해서 명령어가 실행되도록 해줬습니다 (이렇게 하면 글자 수도 딱 5글자) 나온 경로로 이동해 보겠습니다
2024.02.15 -
old-34 풀이
검은 메인 화면에 debug me라는 알림 창이 떴습니다 소스를 확인해봐야겠습니다 javascript 코드가 있습니다 저 상태로는 디버깅하기 힘들 테니, Online JavaScript Beautiful로 코드를 보기 편하게 만들어주겠습니다 var a = ['RcOhTDV1Ew==', 'McOVwqpRBg==', 'c8K/w43DvcK8', 'SsOrTCF1CVDCgcKLEsKc', 'NsK/w4Bc', 'G1TDpwk=', 'AcKtwqfDlW7Dsw==', 'e3kkcQJfwoNFDEU9', 'QMOXDBo=', 'w5bCsWlh', 'eWY6bg8=', 'FnbDoEvDtl1LUkB7w4Q=', 'esOZTiPDsg==', 'bzfCkFfCtA==', 'ZmzDjHcn', 'PxLCm3LDvA=='..
2024.02.15 -
old-59 풀이
회원가입과 로그인을 할 수 있는 입력란이 보입니다 preg_match()랑 mysqli_query()가 있는 거 보니까 SQL Injection 문제인 것 같습니다 우선 lv가 "admin"일 때 문제가 풀린다고 합니다 그리고 lid와 lphone에는 addslashes() 함수로 이스케이핑을 해줍니다 그 아래쪽을 보면 phone은 20글자가 넘어가면 안되고, id에 admin이 포함되면 안 된다고 합니다 그리고 phone에는 admin, 0x, #, hex, char, ascii, ord, select가 필터링됩니다 이를 정리하면 id에 필터링을 우회하여 admin을 넣으면 됩니다 SQL에 있는 reverse() 함수를 활용하여 "admin" 대신 "nimda"를 넣어주겠습니다 (주석은 #이 필터링되므..
2024.02.15