본문 바로가기

Webhacking

(47)
[Root-me] HTML - disabled buttons 풀이 보호되어 있는 글입니다.
[Root-me] LDAP injection - Authentication 풀이 보호되어 있는 글입니다.
[T0M4TO] Heavy Query Time based SQL Injection ※ Query는 Mysql을 기반으로 작성했다. 0. 개요 Time based SQL Injection은 말 그대로 시간을 기반으로 한 SQL Injection이다. SQL Injection이 가능한것 같으나 Error 내용이 눈에 띄지도 않고, Response 데이터를 통해 참 거짓을 판별할 수 없는경우 주로 사용하게 되는데, 주로 Sleep과 Benchmark를 사용하는 것이 대부분이다. 하지만 Sleep과 Benchmark는 너무 유명하다보니 waf에서 막힌다거나, 키워드로 필터링 당할때도 있다. 또 sleep과 benchmark는 조건문을 이용해야 데이터를 추출해내기 용이한데, 조건문인 if문이나 case when문도 역시나 너무 유명해서 같이 필터링 당하는 경우가 많다. 마지막으로 이건 뇌피셜이..
[T0M4TO] OWASP Top 10 - 2021 한글 리뷰 드디어 OWASP Top 10이 업데이트 되었다!!! 내 기억이 맞다면 2017년도 이래로 4년만에 업데이트 된 것이다. 내용의 변화가 무척 흥미롭다. 얼른 알아보자. (원문 : https://owasp.org/Top10/) 우선 2017년도와 비교했을때의 큰 변화는 아래와 같다. Injection이 왕좌를 내려놓고 3위로 물러났으며 왕좌는 Broken Access Control이 차지했다. XSS가 단일항목에서 Injection으로 흡수되었다. XXE가 단일항목에서 Security Misconfiguration으로 흡수되었다. Insecure Deserialization이 단일항목에서 Software and Data Integrity Failure로 흡수되었다. 자 하나씩 순서대로 보도록 하자. 1. ..
[LOS 5번 : wolfman] 문제 풀이 LOS 5번 wolfman 풀이를 정리해 보았다. 5번 wolfman 문제는 크게 3가지 특징이 있다. GET방식으로 전달받는 pw 파라미터에 띄어쓰기를 사용할 수 없다. 실행시킬 쿼리의 where 구문 내 id컬럼이 'guest'로 고정되어 있고, 파라미터는 pw만 받는다. 풀이 방법은 여전히 쿼리 조회 결과 id 컬럼이 'admin'이어야 한다. 위 3가지 특징을 한 줄로 정리하면 'id가 guest로 고정된 상태에서 pw 파라미터를 이용해 띄어쓰기를 쓰지않고 공격하여, 조회된 id가 admin이 되도록 만들어라' 이다. 핵심은 바로 띄어쓰기만을 막았다는 데에 있다. mysql에서 쿼리를 실행할 때, 공백의 역할을 하는것은 띄어쓰기 뿐만이 아니다. mysql 클라이언트에서 쿼리 입력중에 엔터를 실수로..
[Webhacking.kr] old-20번 문제 풀이 20번 풀이도 가즈아 맨 위에 time limit이 있고, 캡챠가 있고... submit이 있다... 일단 다 입력해서 submit을 눌러보았다. (무엇을 보는거지? 그건 내 잔상이라구...) 느리댄다... 느낌이 팍 온다. 캡챠를 넣어놓은 것으로 보아, 닉네임/코멘트/캡차를 완벽하게 입력하여 submit을 2초안에 해야 풀리는 문제이다. 문제를 푸는 방법은 2가지 정도가 있을것 같다. python urllib 또는 request 또는 selenium 모듈을 사용하여, Response내 captcha를 파싱하여 자동으로 Request에 넣어 보내기 프록시 툴을 이용하여 응답 코드 내 html 코드를 수정하여 자동으로 Request를 정상적으로 보내게 만들기 첫번째 방법은 너무 쉬우니, 두번째 방법을 설명..
[Webhacking.kr] old-19번 문제 풀이 19번 풀이 가즈아 역시나 별게 없다. id에 기본적으로 admin이 들어가 있고 제출버튼이 있다. 눌러보니, you are not admin 이 나타난다. 문제를 나름 많이 풀어보면서 느낀점은, 이런식으로 you are not admin이라고 뜬다는 건... admin으로 어떻게든 성공시키라는 얘기가 된다. admin이 안되니까 우선 a를 넣어봤다. a로는 로그인이 된다. 근데 javascript도 따로없고, SQLI도 안되는것 같고... 무슨 문제인가 고민을 하다가, 쿠키를 확인해보니... userid가 쿠키에 들어가있다. (딱봐도 문제풀이에 100퍼센트 연관이 되어있음을 알 수 있다) 다만 그 값이 base64로 인코딩 되어있는것 같았다. base64로 디코딩해보니, 32byte의 문자열이 나타났다..
[Webhacking.kr] old-18번 문제 풀이 18번 문제를 풀어보자 JS 문제에서 탈출했다. 간만에 보는 SQLI 문제다. 코드를 보지말고 풀까 했지만, 삽질 시간만 늘어날것 같아 코드를 봤다. 크게보면 hex랑 공백정도를 막아둔것 같다. 공백을 ||, &&로 우회하지 못하도록 처리도 해뒀다. 우회는 너무 간단하다. 공백대신 Line Feed(%0a)를 넣어주면 된다. 123123%0aor%0aid='admin' 이렇게 payload짜서 URI에 get방식으로 전달해주면 된다. 풀렸다. 사실 코드보면 admin의 no가 2인것도 나와있는데, 그 정보는 굳이 없어도 풀 수 있는 문제였다. 100점짜리 SQLI이기에 난이도가 상당히 낮았다.