일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- NULL 잡아먹는 놈
- goblin 라이트업
- gremlin 라이트업
- goblin 풀이
- cobolt
- darkelf
- orc 풀이
- blind sql injection
- wolfman
- los of sql injection xavis
- gremlin 풀이
- lord of sql injection 풀이
- 34t3rnull
- wolfman 라이트업
- lord of sql injection
- orc
- xavis 라이트업
- cobolt 라이트업
- zomblie_assassin 라이트업
- cobolt 풀이
- zombie_assassin
- wolfman 풀이
- los 라이트업
- darkelf 풀이
- orge 라이트업
- orc 라이트업
- darkelf 라이트업
- SQL Injection
- los 풀이
- Los
- Today
- Total
목록blind sql injection (20)
NULL 잡아먹는 놈
HINT : 1. 단순한 Blind SQL injection 문제이다.2. regex, like 대신 쓸만한게 없을까? 이번 문제는 제일 싫어하는 blind sql injection 문제이다.regex, like에 필터링이 걸려있는데 어짜피 substr이랑 hex를 쓰면 우회할 수 있다.일단 길이를 구해보자.나는 hex(pw)로 분석을 할 것이니 hex(pw)의 길이를 구해보도록 한다. 80에서 Hello guest로 바뀐 것을 보아 80이 admin의 패스워드임을 알 수 있었다.그 다음은 admin의 pw를 구하기 위해 쿼리를 보내준 것이다.일단 쿼리의 형식이 pw=0' or substr(hex(pw),1,n)='~~~~형식이니 이 형식에 맞춰서 파이썬 파일을 짜보았다. (제일 밑에 첨부) 일단 처음에..
HINT : 1. 어랏? 필터링에서 빼먹은 주석이?2. 문자열은 0이랑 동일 취급이라며? 문제는 위와 같다. 이번에는 길이 제약 + 주석 필터링이 걸려있다.이번에도 그냥 id값만 나오게 하면 된다.일단 주석의 종류를 살펴보자면#, -- , ;%00 , /**/ 이 있다.일단 필터링 되어있는 #과 --를 제한 주석들이 가능한지 시험해보았다. 일단 ;%00과 /**/은 쓸 수 있는 것으로 판명났다.근데 pw값의 길이가 최대 6인 것을 보아 길이가 4인 /**/보다는 길이가 2인 ;%00를 쓰기로 했다.그 다음은 문자열||1을 이용해서 풀려고 했었다.그러기 위해선 ')||1;%00을 생각했었다. ??? 쿼리를 넣고 보니 No Hack이 뜨는 것을 볼 수 있었다.')||1;%00은 길이가 7이기 때문인 것이었다..
HINT : \은 싱글쿼터를 문자열 취급으로 바꿔준대~ 이번 문제는 앞 전 문제인 zombie_assassin의 내용을 preg_match로 바꾼 문제다.처음 풀 때는 preg_match가 무적이라서 안 풀릴줄 알았고, 좌절했었다.관련 문서를 다 뒤져봤는데 char, hex를 쓰라고 하는데 아마 안 먹히는 것 같다.그래서 백슬래시를 이용하라는 문서를 토대로 공격을 진행했고, 성공했다. 일단 백슬래시가 필터링 되지 않는 것을 확인할 수 있는데 그것을 이용해서 공격해보자. 아무 오류가 안 뜨는 것을 볼 수 있다.먼저 풀이를 하고 설명을 하도록 하겠다.일단 백슬래시를 이용해서 페이로드를 작성했고, 위와 같이 클리어했다. 설명 : \를 이용해서 '를 문자열 취급해준다면select id from pob_succu..
HINT : @ereg는 취약점이 있다죠?? 이번 문제는 필터링 우회 문제 같다.어짜피 preg_match에 있는 것은 풀기 위해서 쓸 필요가 없으니, ereg를 우회해주기로 했다.ereg는 C에서 문자열 함수와 비슷하게 NULL문자를 만나기 전까지 동작한다고 한다.그러니깐 '%00을 하면은 ereg 범위에 들어가지만 %00'을 하면 ereg 범위 바깥이라는 뜻이다.한 번 우회가 되는지 확인해볼까? 깔쌈지게 우회가 된다. 이제 싱글 쿼터를 사용할 수 있으니 그냥 ||1만 해주면 끝날듯 하다. 클리어!!!
HINT : 발상의 전환이 필요하다. 문제는 다음과 같다.근데 이상한게 싱글쿼터를 우회하지 못하게 preg_match로 막아놨다.eregi면은 우회할 수 있는데 쩝....그렇다면 like 안의 구문으로 끝내야 된다고 생각했다.그래서 아스키 코드 값 다 넣어보았는데, 아무래도 Hello admin이란 단어는 안 떴었다.그래서 발상의 전환을 통해 Hello admin보다 Hello guest가 먼저 나와서 가리는게 아닐까?라는의구심이 들어서 그대로 쭉 해보았다. Hello guest 득템 득템 2!! 싱겁게 3글자에서 끝났다. 832%에서 Hello admin이 뜬 것을 보니 아마도832~~~가 답인 것 같은데 그것을 찾긴 귀찮으므로 pass~ 암튼 CLEAR!!!
HINT :1. 길이가 1을 넘지 말아야한다 -> 과연 무엇이 필요할까?2. 필터링이 아직 부족하다. 이번 문제는 다음에 제약조건이 있다. 1. 길이를 1을 넘으면 ㄴㄴ2. %20, %0A, %0D, %09가 필터링 되어있다. 이 두 조건인데, 1과 2를 조합해보면 대충 한 칸을 차지하는 공백 문자를 써야함을 알 수 있다.%20을 대신할 수 있는 문자가 무엇이 있을까??궁금하면 웹 해킹 기초 꿀팁 보도록!.......... 암튼 %20을 대신할 수 있는 것은 %0A, %0B, %0C, %0D, %09가 있으니나머지 2개를 아무거나 써주면 끝~ 이렇게나 이렇게 써주면?? CLEAR!!!!
HINT : 1. 필터링이 겁나 많으니 우회를 먼저 생각해야하겠는걸??2. no에는 싱글쿼터 처리가 안 되어 있다. 아.... 정말 귀찮은 문제다.... hex면은 2배로 귀찮아지기 때문 (어짜피 홀 수 번째는 3 or 6이지만 ㅎ)정말 정말 혼또 귀찮았던 문제다... (물론 내 풀이 기준 더 쉽게 풀수도 있을지도?)일단 우회하는 목록이싱글 쿼터 -> 더블 쿼터or -> ||스페이스바 -> %09, %0a ~ %0d, /**/LIKE, 문자열 비교 -> hex와 % 및 를 이용로 우회를 하려고 한다. (뒤에 모든 사진에는 %20 대신 %09를 썼습니다. URL이 안 보여도 유의그리고 hex() 옆에 위치한 %는 URL에서 쓰려먼 %25를 써야한다.) 일단 길이를 알아보자!일반 문자열 기준으로 8임을 알 ..
HINT : 1. 필터링된 것이 좀 많네. 대체할 것을 생각해보자!2. no에는 싱글쿼터 처리가 없네 ㅎㅎ? 그렇다... 제일 귀찮은 Blind SQL injection 문제이다.필터링되는 항목을 살펴보면 자주 사용하는 싱글쿼터(')와 =이 필터링되었는데일단 싱글쿼터(')는 더블쿼터(")로 대체되고, =은 부등호나 LIKE 연산자로 대체할 수 있다.싱글쿼터가 필터링 되었으니 우리는 pw 말고 no를 이용하여 sql injection 쿼리를 생각해보자!일단 길이를 알아보자! 일단 길이는 8임을 알 수 있다. (맨날 8이라 이젠 8부터 확인함 ㅋㅋ)이제 맨날 하던대로 blind sql injection을 시행해보면 pw 값이 '1c62ba6f' 임을 알 수 있다.별로 어렵지 않은 문제이다.2번째 $query..