본문 바로가기

webhacking13

웹해킹 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.
웹해킹 22번 (webhacking.kr old 22) 1. 공격유형 : Blind Sql Injection 2. Write up import requests s = requests.Session() proxyList = {'http':'127.0.0.1:8000', 'https':'127.0.0.1:8000'} def login(): url = 'https://webhacking.kr/login.php?login' login = {'id':'', 'pw':''} response = s.post(url, data=login, proxies=proxyList, verify=False) response.status_code print (response.text) def payload2(): login(); TrustKey = "Wrong password!" ; .. 2020. 1. 5.
웹해킹 21번 (webhacking.kr old 21) 1. 공격유형 : Blind Sql Injection 2. Write up Blind Sql Injection 실행을 위해 스트립트 작성 import requests s = requests.Session() proxyList = {'http':'127.0.0.1:8000', 'https':'127.0.0.1:8000'} def login(): url = 'https://webhacking.kr/login.php?login' login = {'id':'', 'pw':''} response = s.post(url, data=login, proxies=proxyList, verify=False) response.status_code print (response.text) def payload2(): login.. 2020. 1. 3.
웹해킹 18번 (webhacking.kr old 18) 1. 공격 유형 : SQL INJECTION 2. 취약점 환경 : Preg Match 함수 우회 (취약함수) 3. Write Up - no값을 받아 preg_match 함수로 패턴매칭 수행 후 일치하면 No Hack 메세지 출력 후 종료 - preg_match 값과 일치하지 않으면 $result 수행 후 id값 비교 id가 guest일 경우, hi guest), (id가 admin일 경우 hi admin 후 solve - Payload : select id from chall18 where id='guest' and no=0 or no=2 - 공백의 경우 preg_match에서 필터링하여 해당 payload 실행 불가 - preg_match의 공백을 우회하기 위해 공백을 아래의 문구로 대체함 ㅇ TAB .. 2019. 12. 24.
웹해킹 16번 (webhacking.kr old 16) 1. 공격유형 : Javascript 2. 취약점 환경 : Javascript 변조 3. Write Up 1. document.body.innerHTML : *의 속성을 주어 색상 및 위치 결정 (Yellow, 0, 0) 2. funtion mv(cd) : cd값에 따라 star의 위치를 변경, 마지막 if문에 따르면 Solve 3. funtion kk(x,y) : rndc의 값은 Random함수 * 900000하여 나온 결과값을 저장 상위에서 지정한 document.body.innerHTML의 *값의 속성을 변경 각함수는 함수는 페이지 호출 시 kk(1,1), onkeypress=mv(event.keyCode)로 호출됨 4. javascript 조작 : mv(124)값을 삽입하여 강제로 mv 함수 호출.. 2019. 12. 24.
웹해킹 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.