'WEB' 카테고리의 글 목록 (6 Page)
본문 바로가기

WEB

(87)
[LOS] step.9 VAMPIRE 풀이 이번 역시 필터링 부분만 보면 쉽게 풀린다 id에 입력값에 대한 필터링이 3가지 있다. 1) 싱글쿼터 2) 대문자 -> 소문자 자동변환 3) admin 입력시 빈칸으로 치환 이를 모두 우회하면 된다. 1번은 뭐 싱글쿼터 안 쓰고 id = admin 하면 된다. 2번은 대문자를 소문자로 자동변환하기 때문에 입력값에 대문자로 넣어야 admin으로 입력될 것 3번은 admin요러케 넣으면 빈칸이 되어버리니 이 점을 우회하는 게 핵심인 듯하다 진단을 하다보면 우회기법들이 다양하게 인터넷이 올라와있기에 나도 실무를 하다가 알게 된 우회기법이다. 3번과 같이 "admin" -> "(빈칸)" 이렇게 변경되면 admin 사이에 admin을 넣어주는 것이다. payload : id=adadminmin ad(admin)m..
[LOS] step.8 troll 풀이 매우매우 간단했던 문제 일단 필터링되는 부분을 보면 id값에 들어가는 것에 대한 필터링이 존재한다. id 입력값에 싱글쿼터나 admin이 들어가면 필터링 되는 것이다. 이때 소문자로 적혀있는 admin 만 필터링되는 것 같아서 Admin 으로 넣어봤더니 성공 ADMIN, AdMin, adMin, admiN 등 모두 가능한 걸 보니 "admin" 이 모양만 아니면 되는 것 같다. solve!!!!!!!!!!!!!!!!!
[LOS] step.7 orge 풀이 앞선 문제들과 동일하게 pw를 받아서 쿼리를 던질 때 해당 요청값에 / / 가 자동으로 붙도록 설계해놨다. 그래서 이번에도 자동화코드를 통해 blind injection으로 패스워드를 알아내야 한다. 대신 앞선 문제와의 차이는 or and 까지 쓸 수 없다는 것. 대신 여기선 sql 쿼리로 던지기에 url 인코딩할 필요 없다. 그래서 그래도 || && # 같은 특수기호를 그대로 넣어주면 된다. payload는 다음과 같다. 먼저, 비밀번호 길이 찾기 pw = ' ' || id = 'admin' && length(pw) = ? # ' 자동화 코드는 아래에 def pw_len(): len_num = 0 while 1 : len_num = len_num + 1 value = "' || id = 'admin' ..
[LOS] step.6 darkelf 풀이 필터링 되는 부분은 위에 빨간색으로 표시된 부분이고, 우리가 변조할 수 있는 파라미터는 pw 뿐이다. 앞선 문제들과 동일하게 id = 'guest' 쪽은 건들일 수 없으니 pw에 id = admin이 들어가도록 조치해야 한다. 일단 필터링 되는 부분에 추가된 사항은 or 과 and 가 필터링된다는 것이다. 그럼 or 과 and 대신 사용할 수 있는 기법을 알아보자. or 우회 기법 || %7c%7c and 우회 기법 && %26%26 특수문자를 두번사용하거나, url 인코딩을 진행하는 것이다. 단, url에서 &기호는 예약문자로, 여러가지 파라미터를 전달할 때 param1=test&param2=admin 이런식으로 연결자로 쓰이기 때문에 유의해야 한다. 먼저, pw=' ' || 1=1 && id = 'a..
[LOS] step.5 wolfman풀이 먼저 코드를 분석해보자. 이번엔 필터링이 하나 더 추가되었다. [ / /i ] pw 입력값에 띄어쓰기가 포함되면 No whitespace를 반환한다. 이번에도 역시 id값 입력값은 바꿀 수가 없이 guest로 고정되어있고, pw값에 id를 조작해야 한다. id = admin 이 들어가도록 우회해야 하는데... 일단 기본적으로 필터링 생각하지 않고 payload를 짜면 다음과 같다. pw = ' ' or 1=1 and id = 'admin ' 이런식으로 들어가야 하는데... 이대로 넣으면 빈칸이 들어가면서 필터링이 된다. %20만 들어가면 필터링이 된다..!!! %20필터링을 우회할 수 있는 기법을 이용하면 될 것 같다. 다음과 같다. %09 tab %0a \n %0d \r + 연결자 () 괄호 /* */..
[LOS] step.3 goblin 풀이 id = 'guest' 가 그대로 박혀있으니 이부분을 무력화할 순 없다. solve되는 곳을 보니까 id = 'admin' 이 될 때 풀리는데, 그럼 id = 'guest' 부분을 우회할 수 없으니 no 뒤에 절에 payload를 바꾸면 될 것 같다. no = 1이 들어가면 guest 가 출력된다. 그럼 admin역시 특정 no를 넣었을 때 admin을 출력할텐데 그 no값은 찾기 매우 어렵다. 그러므로 무력화 시켜봐야 한다. ?no=11 or id = admin 이렇게 했더니 아무런 반응이 안 보인다. id = 'admin' 이렇게 하면 싱글쿼터(더블쿼터포함) 때문에 No Quotes ~_~ 로 반환되어 불가능 그러면 admin이 안 먹히니까 admin 부분을 우회해야 한다. 대문자 변환해도 안 먹힘 ..
[LOS] step.4 orc 풀이 이번 문제는 id = admin 을 변경할 수 없어서 이전문제를 풀듯이 id에 들어가는 입력값을 통해 pw 우회가 불가능하다. 그래서 결국은 pw를 일일이 찾아야 한다는 뜻인데... 일단 pw ='' 이 부분을 true로 만든 후에 blind injection을 해야 한다. pw='' or 1=1 and (blind injection code) # ' 이런식이다. 그래서 python 자동화코드를 짜면 짧은 시간 내에 풀이가 가능하다. 가장먼저 할 것은, pw의 길이 찾기 def pw_len(): len_num = 0 while 1 : len_num = len_num + 1 value = " 'or id = 'admin' and length(pw)={} #".format(len_num) #injection..
OWASP TOP 10 참고링크 https://netmarble.engineering/owasp-top-10-2021-1/ https://netmarble.engineering/owasp-top-10-2021-2/