전체 글 (638) 썸네일형 리스트형 [webhacking.kr] 웹해킹.kr old-54번 (100) 이번에는 webhacking.kr의 old-54번 문제입니다. 소스 코드를 이용하는 문제고 100점이 배점되어 있습니다. 처음 화면에 들어가면 위와 같이 문자열이 빠르게 지나갑니다. FLAG라는 단어가 있는 걸 보니 연속된 문자열이 해답 같습니다. 소스 코드를 먼저 보겠습니다. answer() 함수를 보면 i++을 해주며 text를 바꾸어 줍니다. if 조건문에서 setTimeout() 함수를 이용하여 text가 변하는 시간을 설정해줍니다. 저 시간을 늘려주면 flag를 구할 수 있을 것 같습니다. script 태그 내의 코드를 복사하고 시간을 2000을 바꾸어 크롬 콘솔 창에서 실행하여 보겠습니다. password가 느리게 바뀌긴 하지만 하나하나 적기가 너무 귀찮습니다. 다른 부분을 수정하여 보기 편하.. [webhacking.kr] 웹해킹.kr old-51번 (250) 이번에는 webhacking.kr의 old-51번 문제입니다. 데이터베이스를 이용하는 문제고 250점이 배점되어 있습니다. 문제에 들어가면 위와 같은 화면이 나옵니다. ID와 PW 입력창이 있습니다. 소스 코드를 보겠습니다. id는 addslashes() 함수로 묶여있어 변조하기 어렵고, pw는 md5로 암호화하는데 md5() 함수에 true가 argument로 쓰입니다. true가 쓰였으면 md5로 변환한 해시값을 16자리의 바이너리 형식으로 암호화해줍니다. 구글에 "SQL Injection with raw MD5 hashes"로 검색하면 md5 함수에서 true를 argument로 사용한 예가 많이 나옵니다. cvk.posthaven.com/sql-injection-with-raw-md5-hashes.. [webhacking.kr] 웹해킹.kr old-59번 (200) 이번에는 webhacking.kr의 old-59번 문제입니다. 데이터베이스를 이용하는 문제고 200점이 배점되어 있습니다. 문제에 들어가면 위와 같은 로그인 폼이 나옵니다. 위에 JOIN으로 된 회원가입 폼도 보입니다. 소스 코드를 보겠습니다. 위쪽이 로그인 폼, 아래쪽이 회원가입 폼입니다. 회원가입 폼을 먼저 살펴보면, addslashes() 함수로 id와 phone의 보안을 강화해줍니다. phone이 20글자 이상이 되면 안 되고, preg_match() 함수로 여러 문자열들을 필터링하고 있습니다. 조건이 완벽하다면 쿼리문으로 값들을 chall59 테이블에 insert 해줍니다. 쿼리문 마지막의 guest가 lv 같습니다. 그리고 위쪽 로그인 폼에서 chall59 테이블에서 id와 lv를 select.. [webhacking.kr] 웹해킹.kr old-39번 (100) 이번에는 webhacking.kr의 old-39번 문제입니다. 데이터베이스를 이용하는 문제고, 100점이 배점되어 있습니다. 문제에 접속하면 위와 같은 화면이 나옵니다. 소스 코드를 보겠습니다. id를 POST 형식으로 전달받고, str_replace() 함수를 통해 특정 문자열들을 치환해줍니다. substr() 함수로 15글자까지 잘라주기도 합니다. 그 밑에는 SQL 쿼리문이 나옵니다. member 테이블에서 id의 길이가 14보다 작고 id가 $_POST['id']일 때 1을 출력하는 것 같습니다. 자세히 보면 쿼리문에서 id를 감싸는 작은 따옴표 하나가 빠진 것을 볼 수 있습니다. 이를 채워주어야 합니다. 헌데 작은 따옴표 하나가 작은 따옴표 2개로 치환되므로, substr() 함수를 이용하여 15.. [webhacking.kr] 웹해킹.kr old-27번 (150) 이번에는 webhacking.kr의 old-27번 문제입니다. 데이터베이스를 이용하는 문제고 150점이 배점되어 있습니다. 들어가면 위와 같은 화면이 출력됩니다. SQL Injection 문제인 것 같습니다. 소스 코드를 보겠습니다. preg_match() 함수로 GET 방식으로 전달하는 no의 select, limit와 같은 문자열들을 필터링해줍니다. 쿼리에는 id='guest'가 고정되어 있습니다. 조건문의 주석에는 admin의 no가 2라고 적혀있습니다. "SELECT id FROM chall27 WHERE id='guest' and no=(0) or no like 2-- ")) or die("query error"); 로 만들어 보겠습니다. 그리고 필터링을 우회하기 위하여 GET방식으로 전달되므로.. 이전 1 ··· 108 109 110 111 112 113 114 ··· 128 다음