write-up(web)

    [Lord of SQLInjection] phantom write-up

    [Lord of SQLInjection] phantom write-up

    문제 화면입니다. ip가 127.0.0.1인 행의 email 값을 알아내야 하는 문제입니다. 일단 기본적으로 insert into 구문에서 values 뒤에 나오는 값은 여러 개가 올 수 있습니다. ,로 구분해서 2개를 넣으면 2개가 동시에 삽입됩니다. 이를 이용해서 email을 구하려고 구문을 짜고 대입하니 나오지 않습니다. 이유를 검색해보니 insert into에 나온 테이블의 이름과 같아서 충돌이 나는 것 같습니다. 그래서 테이블에 별칭을 부여해서 쿼리를 넣어주니 email 값이 성공적으로 등장했습니다. 이 값을 제출하면 문제가 풀립니다~

    [Webhacking.kr] Challenge old-25 write-up

    [Webhacking.kr] Challenge old-25 write-up

    문제 화면입니다. url에 file 파라미터로 값을 전달해주면 결과가 나옵니다. flag를 검색해보니 코드를 봐야함을 알 수 있습니다. 키워드를 찾기 위해 라이트 업을 찾아봤는데 php wrapper 취약점이라고 합니다. 소스 코드를 받았습니다. 이 값을 base64 디코딩을 해주면 아래와 같습니다. 플래그를 제출하면 문제가 풀렸습니다! (XXE Injection에서 배웠던 php 필터를 기억했다면 라업을 보지 않고도 해결할 수 있지 않았을까 싶습니다..)

    [Lord of SQLInjection] frankenstein write-up

    [Lord of SQLInjection] frankenstein write-up

    문제 화면입니다. admin의 pw를 알아내는 문제입니다. error를 표시해주니 error based sql injection을 사용해 줍니다. 괄호가 필터링 되어 있으므로 조건을 표시해주는 case when else end 구문을 사용해줍니다. 파이썬으로 익스 코드를 짜줍니다. 한 문자씩 부루트포싱해서 값을 찾아준 뒤 찾은 값들은 pw에 저장해주면서 누적시켜줍니다. %가 나오면 pw의 끝이므로 while 문을 종료시켜 줍니다. 실행 결과 admin의 pw를 알아냈습니다. 이 값을 입력하면 문제가 풀립니다!

    [Webhacking.kr] Challenge old-22 write-up

    [Webhacking.kr] Challenge old-22 write-up

    문제 화면입니다. blind sql 문제로 보입니다. join 탭으로 가서 admin으로 계정을 생성하려니까 안 됩니다. admin의 pw를 알아내는 방법을 찾아야 합니다. sql 구문을 넣어보면 Login Fail!과 Wrong password! 두 가지의 반응이 나옵니다. 참일 때 Wrong password!가 나오므로 이를 통해 파이썬으로 코드를 짜줍니다. 이를 실행시키면 해쉬 값이 나옵니다. 이 값을 복호화해주는 사이트에서 복호화 해주면 wowapple이라는 값이 나옵니다. 그러나 이 값을 입력하면 로그인이 되지 않습니다. 이유를 알아보기 위해 test 계정을 만들어 봅니다. guest의 hash 값을 가져다가 복호화해보면 제가 설정한 패스워드인 guest뒤에 apple이 붙은 모습을 볼 수 있습..

    [Lord of SQLInjection] blue_dragon write-up

    [Lord of SQLInjection] blue_dragon write-up

    문제 화면입니다. 첫 번째 필터링에선 /prob _ . 을 필터링 합니다. 두 번째 필터링에선 ' \를 필터링 합니다. 여기서 중요한 건 필터링이 2개로 나뉘어져 있고 두 번째 필터링을 거치기 전 결과를 확인할 수 있기 때문에 싱글 쿼터를 사용할 수 있다는 점입니다. 이 때 time based injection을 사용할 수 있습니다. sleep 함수와 if 문을 활용해 pw를 알아낼 수 있습니다. 익스 코드는 위와 같이 작성할 수 있습니다. if 문의 조건이 참이면 sleep 함수가 실행됩니다. 파이썬에서 time 모듈의 elapsed.total_seconds() 메서드를 활용하면 해당 코드의 실행 시간을 알 수 있습니다. 아래 실행 결과를 보면 pwLen이 8일 때 값이 2가 넘어가는 것을 볼 수 있습..