본문 바로가기

ctf10

웹해킹 13번 (webhacking.kr old 13) 1. 공격유형 : Blind Sql Injection 2. Write Up 이 문제는 이번에 old 버전으로 리뉴얼 되었는데 공격 포인트를 정리해보자면 Ascii, Limit, having, group by, union, +, group_concat 등의 구문이 차단되어 있고 컬럼, 테이블 정보를 모르는 환경에서 "Blind Sql Injection"을 기반으로하는 "ord, concat" 구문을 조합 공격으로 해결 가능한 문제였다. 기존에는 Ascii 문자가 필터링되었을때 chr("문자") 등의 방식으로 바로 비교했었던 경험으로 동일하게 시도했지만 000000000 등의 숫자만 결과로 보여주어 이부분을 찾는데 조금 애를 먹었다. Ascii의 대안인 ord 기능이 있다는 것을 알고 적용했을때 문제를 해결.. 2020. 1. 30.
웹해킹 24번 (webhacking.kr old 24) 1. 공격유형 : PHP 함수 2. Write up 😊 코드분석 - extract 함수 : 이 함수는 array 변수 내에 존재하는 각각의 데이터를 변수화 시켜준다. - 그림에서 eTest Array 변수를 생성하여 출력한뒤 extract로 변환하면 우측과 같은 결과가 나타나는데 이는 연관 배열 형태의 변수가 extract에 의하여 개별 변수로 이용 가능한 것을 확인할 수 있다. - 즉 eTest 변수 내의 'test'를 출력할 때 기존 echo $eTest['test']에서 echo $test가 되는 것이다. - 이후 $ip, $agent 변수에 각각의 값을 지정해 준다 (extract 함수를 안썼다면 $ip= $_SERVER['REMOTE_ADDR'] 이런식으로 지정을 해야하지만 $REMOTE_ADD.. 2020. 1. 19.
웹해킹 14번 (webhacking.kr old 14) 1. 공격 유형 : Javascript 2. 취약점 환경 : Javascript 난독화 3. Write Up 4. 소스코드 분석 - document.URL (현재 접속 URL 주소)를 ul 변수로 지정 - ur.indexOf(".kr")을 이용해 ul에 저장한 URL 주소를 .kr을 기준으로 index 값 추출 - ul * 30 후 ul 변수에 저장 이후 ul값과 pw.input_pwd.value의 값의 일치여부에 따라 Solve / Wrong 수행) - ul 값은 540이나 if문 수행시 540*540값으로 변환됨 2019. 11. 25.
웹해킹 12번 (webhacking.kr old 12) 1. 공격 유형 : Javascript 3. Write Up - 소스코드 해석 1. ck 파라메터 값을 받아서 '=' 문자열을 기준으로 substr을 이용하여 분리함 (=뒤 문자열 -> ?ck="페이로드") 2. enco 변수에 charcode 1~122에 해당하는 값 삽입 (  !"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy) 3. enco_x Function은 인자dls fromcharcode(문자열의 ascii값) 'x'를 받아서 charcodeat(x) -> 문자열값으로 돌려줌 4. if문에서 ck값이 String.fromCharCode(enco.. 2019. 11. 10.
웹해킹 11번 (webhacking.kr old 11) 1. 공격 유형 : GET 파라메터 변조 2. 취약점 환경 : - 3. Write Up - $pat 변수는 정규표현식의 성질을 같는다 - preg_match는 정규표현식과 GET 파라메터 Val 값을 비교한다 - $pat 분석 1. [1-3] : 1~3 숫자 중 1개 2. [a~f]{5} : a~f 문자 중 5개 3. .*$_SERVER[REMOTE_ADDR].* : .*뒤에 0개 이상의 클라이언트 IP 문자열이 반복되며 .*에서 종료됨 4. \tp\ta\ts\ts : p a s s (탭) -> 탭을 URL 인코딩하면 %09가 된다 - Source 분석 1. 11-1.php : GET 파라메터 pay에 값을 11.php로 전달 2. 11.php : pay값을 fong에 저장하여 $pat과 정규식 비교 -.. 2019. 11. 8.
웹해킹 9번 (webhacking.kr old 9) 1. 공격 유형 : BLIND SQL INJECTION 2. 취약점 환경 : no값에 BLIND SQL INJECTION 수행 3. Write Up ㅇ 공격 포인트 - No 3번의 id 컬럼이 DB에 존재한다고 추측 - No 3번의 id 컬럼을 확인하기 위해 SQL INJECTION 수행 ㅇ 공격 수행 - SQL 쿼리를 분석해보면 no 파라미터에 숫자를 전달하면 DB에서 해당 no의 id값을 출력해주는 형태로 no 3값의 id를 출력해야 하고 이를 진행하기 위해 if문 구조의 BLIND INJECTION 수행이 필요함 - BLIND INJECTION의 경우 반복으로 값을 요청해야하기 때문에 Python(3.x) 버전의 Reuqests를 이용하여 코드 공격 코드 생성 import requests s = r.. 2019. 10. 30.
웹해킹 8번 (webhacking old 8) 1. 공격 유형 : 파라메터 변조, SQL INJECTION 2. 취약점 환경 : Client Header값인 User_Agent 변조를 통해 SQL INJECTION 수행 3. Write Up ㅇ 코드 분석 - $agent에 trim(앞뒤 공백 제거)을 적용한 HTTP_USER_AGENT 값 선언 - $ip에 Client IP인 $_SERVER($REMOVE_ADDR) 값 선언 - $ip에 from 문자열 존재시 htmlspecialchars 함수가 적용된 $agent 문자열 표현 - $count_ck에 chall8 테이블 row수를 저장함 (count 함수 이용) - $count_ck 값이 70 이상일 경우 chall8 테이블 삭제 - chall8 테이블에서 addslashes함수를 적용하여 $_SE.. 2019. 10. 20.
웹해킹 6번 (webhacking old 6) 1. 공격 유형 : 파라메터 변조, 역공학 2. 취약점 환경 : View Source의 PHP 코드를 역공학하여 인증값 입력 3. Write Up ㅇ 코드 해석 - $val_id, $val_pw 값을 각각 guest, 123qwe로 선언한 뒤 base64_encode 함수를 이용해 20번 인코딩 - 인코딩된 $val_id, $val_pw 각각의 변수를 str_replace 함수로 난독화 수행 - 난독화한 변수를 Setcookie를 이용하여 user, password에 입력함 - $decode_id, $decode_pw 변수에 난독화한 user, password값 선언 후 str_replace 함수로 복호화 수행 - 복호화된 $decode_id, $decode_pw 변수를 base64_decode 함수를 .. 2019. 10. 20.
웹해킹 1번 (webhacking old 1) 1. 공격 유형 : 쿠키값 변조 2. 취약점 환경 : cookie의 user_lv=1 값을 변조하여 인증 우회 3. Write Up ㅇ 코드 해석 - SetCookie에서 user_lv의 값을 1로 선언하고 있음 (뒤의 time값은 쿠키 유지시간, /challenge/web-01/은 쿠키 유효범위를 가르킴) - $_COOKIE['user_lv'] 값이 숫자가 아니라면 숫자 1을 선언 - $_COOKIE['user_lv'] 값이 5보다 크거나 6보다 같거나 작으면 Solve(1) 수행 ㅇ 공격 시도 2019. 10. 20.