목록전체 글 (542)
선릉역 1번 출구
소스 코드를 확인하고 Online javascript beautiful site를 통해 정리해보았다. var a = ['RcOhTDV1Ew==', 'McOVwqpRBg==', 'c8K/w43DvcK8', 'SsOrTCF1CVDCgcKLEsKc', 'NsK/w4Bc', 'G1TDpwk=', 'AcKtwqfDlW7Dsw==', 'e3kkcQJfwoNFDEU9', 'QMOXDBo=', 'w5bCsWlh', 'eWY6bg8=', 'FnbDoEvDtl1LUkB7w4Q=', 'esOZTiPDsg==', 'bzfCkFfCtA==', 'ZmzDjHcn', 'PxLCm3LDvA==', 'IcKlVy9pw57DgMK3w6kmwpvCiUnDhcOKw4A=', 'LMKnwqECawEeEMOZQsK7wrLCscKpSG1Awqv..
화면을 들어가면 ?부분에 문자가 막 나오다가 마지막은 ?로 끝난다. 동체시력이 좋다면 이 문자를 그대로 받아적으면 될 듯 ㅋㅋㅋ 아무튼 먼저 소스코드를 확인했다. 2가지 function run(), answer()이 존재했다. 첫 번째 함수 run()은 객체 관련 함수라 패스하겠다. 여기서 중요한 건 x가 그 객체를 받아왔다는거고 그 뒤 answer()함수를 통해 화면에 어떤 문자열을 띄우게 돼 있다는 것이다. 먼저 중요해 보이는 함수인 setTimeout에 대해서 알아보자. *setTimeout은 시간 지연 함수이다. setTimeout(1,2)에서 1은 실행시킬 코드를 의미하고 2는 delay 시간으로 1000=1초이다. 그러니까 setTimeout을 통해서 1초 뒤에 answer에 매개변수 0을 넘..
일단 _, ., () 문자가 preg_match로 필터링된다. pw값을 구하는 것이 이 문제의 핵심인데 어떤 단서도 보이지 않는다. 이런 문제를 blind sql injection이라고 하는데 오늘은 http request를 사용해서 이 문제를 풀어보려고 한다. +http request는 http 요청 method이다. 이 문제를 풀기 전 알아야할 지식이 있다. 1. length: 문자열 길이 반환 2. substr: 문자열 위치에서 특정 개수의 char를 반환 *MySQL은 대소문자를 구분하지 않아서 ord()가 필요하다. /ord가 반환한 아스키 코드를 다시 문자로 바꿔주기 위해서 chr() 함께 사용하는 경우가 많다. 먼저 requests를 import한다. url과 header를 설정해주고 패스워..
우리가 건들일 수 있는 부분은 pw이고 주의해야할 점은 preg_match보다는 뒤에 있는 query인 and 1=0이다. 일단 연산자 우선순위가 and > or이기 때문에 pw에 적절한 쿼리를 주어 id='admin'을 입력하자. 방법이 여러가지일 것 같은데 나의 경우는 ?pw=1%27%20or%20id=%27admin%27%20or%20id=%27adm 로 주었고 중간 값만을 true로 해서 where절이 true가 되게 했다.