본문 바로가기

웹/los

(29)
los 5번 los 5번입니다. 문제부터 살펴보겠습니다. 이 문제는 3번과 유사하지만 쿼리문에 공백이 들어갈 경우 필터링 되어 오류메시지를 출력합니다. 이때 공백을 라인피드 문자인 %0a로 대체해주게 되면 문제가 간단히 해결됩니다. 답:?pw='%0aor%0aid='admin
los 4번 los4번입니다. 문제를 살펴보겠습니다. 이 문제는 정확한 pw를 구해야만 문제가 해결됩니다. 그렇기 때문에 먼저 비밀번호의 길이를 알아낸 후에 brute forcing으로 비밀번호를 알아내면 됩니다. 저는 파이썬 코드를 통해서 비밀번호의 길이와 비밀번호를 찾았습니다. 공격에 사용한 파이썬 코드는 아래와 같습니다. 위 코드를 간단하게 설명하면 먼저 1부터 29까지 반복하여 length함수를 이용하여 찾습니다. 이때 비밀번호의 길이와 일치할 경우 화면에 Hello admin이 출력이 되기 때문에 Hello admin을 찾으면 비밀번호를 찾아내는 mathing함수를 호출합니다. 이 함수는 substr함수를 이용하여 비밀번호를 찾아냅니다. 이때 사용되는 substr함수는 (str,from,count)의 인자를..
los 3번 los 3번입니다. 먼저 문제 살펴보겠습니다. los 3번은 no에 해당하는 값을 우리가 넣어줄 수 있는 상황입니다. 이때 2번과 같이 id 값을 admin으로 바꿔 주어야 문제를 해결할 수 있습니다. 위의 문자 조건은 '문자를 사용하지 못하는것을 제외하고는 los 1번과 비슷합니다. no의 값에 따라 가져온 결과값을 출력해주기 때문에 no값의 조정을 해주면 가져온 id의 값이 달라지기 때문에 no의 값을 가져오면 id값을 admin으로 설정해줄 수 있을 것 같습니다. no=1일 경우 no의 값이 1일 경우에는 guest의 값이 가져오게 되고 우리가 원하는 값은 admin이기 때문에 일단 no의 값이 1은 아니라는 것을 알 수 있습니다. 그리고 0을 넣을 경우에는 아무변화도 없었기 때문에 0도 아니라는 ..
los 2번 los 2번입니다. 먼저 문제부터 살펴보겠습니다. 2번 문제 코드를 보면 1번과 조건이 매우 유사합니다. 하지만 비밀번호가 md5 형식으로 암호화되어 있습니다. 그리고 id값이 'admin'이 아닐 경우에 문제가 해결되지 않습니다. 1번에서 비밀번호를 항상 참으로 만들어 줄때 pw=1 'or 1='1을 사용해주었는데 이 것처럼 id=admin'or 'admin'='admin을 입력해주면 무조건 id에는 admin이 들어가게 되고 이럴 경우 문제가 해결됩니다. 쿼리문 답 : ?id=admin'or 'admin'='admin
los 1번 오늘부터 los 1번부터 라업을 작성해보겠습니다. 먼저 문제 코드 살펴보겠습니다. /prob|_|\.|\(\)/i 이 표현을 보면 "prob", "_","." 등의 문자를 사용할 수 없게 되어 있습니다. 그리고 아래의 쿼리문을 보면 아이디와 비밀번호를 get형식으로 받도록 합니다. 여기서 get 방식이란 값을 전달할 때 get형식으로 전달하게 되면 그 값들이 url에 표시되게 된다는 특징이 있습니다. 그렇기 때문에 url에 아이디와 비밀번호를 저희가 원하는 값으로 삽입할 수 있습니다. 여기서 쿼리문이 id={$_GET[id]} and pw='{$_GET[id]}'일때 db에 있는 모든 id값을 가져오는 것입니다. 여기서 비밀번호를 모르기 때문에 비밀 번호를 항상 참이도록 맞추어줘야 합니다. 그런데 저희는..