write-up(web)/LOS

    [Lord of SQLInjection] godzilla write-up

    [Lord of SQLInjection] godzilla write-up

    문제 화면 및 소스 코드입니다. 이전 문제에서 사용했던 WAF 우회 페이로드를 사용해 blind sql injection을 수행할 수 있습니다. blind sql injection이 가능하다는 것을 알아냈고 pw의 길이는 8자 임을 확인했습니다. 파이썬으로 코드를 짜줍니다. admin의 pw를 획득했습니다. 끝!

    [Lord of SQLInjection] death write-up

    [Lord of SQLInjection] death write-up

    문제 화면 및 소스 코드입니다. 이전 문제와 동일하게 modsecurity waf rule set이 적용되어 있습니다. 이전 문제에서 사용했던 페이로드를 가져와서 사용해보면 admin이 아니라고 합니다. 아직까진 admin이 테이블에 있다고 생각했습니다. order by로 정렬을 적용해주면 문제가 풀렸습니다! https://ssongkit.tistory.com/205 [Lord of SQLInjection] cthulhu write-up 문제 화면 및 소스 코드입니다. 무조건 참인 조건 ' or 1=1# 을 넣어주자 권한 부족으로 거부당합니다. 문제에서 나온 ModSecurity Core Rule Set v3.1.0을 구글에서 찾아보면 https://github.com/SpiderLabs/owasp-mo..

    [Lord of SQLInjection] cthulhu write-up

    [Lord of SQLInjection] cthulhu write-up

    문제 화면 및 소스 코드입니다. 무조건 참인 조건 ' or 1=1# 을 넣어주자 권한 부족으로 거부당합니다. 문제에서 나온 ModSecurity Core Rule Set v3.1.0을 구글에서 찾아보면 https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181 Bypass the latest CRS v3.1.0 rules of SQL injection · Issue #1181 · SpiderLabs/owasp-modsecurity-crs Type of Issue False Negative Description Per #1167, I wanna raise more FNs in this thread. Before getting into other FNs..

    [Lord of SQLInjection] alien write-up

    [Lord of SQLInjection] alien write-up

    문제 화면 및 소스 코드입니다. 4개의 조건문을 통과해야 하는 상황입니다. 조건문에 따라 쿼리 결과가 admin이거나 admin이 아니어야(!admin) 합니다. 즉, 쿼리의 결과가 admin, !admin, !admin, admin 순으로 결과가 나와야 합니다. 부분 주석을 통해 첫 번째 if를 통과했습니다. 하지만 한 번 실행할 때 2개의 결과(admin, !admin)을 동시에 내야 쿼리1에 대한 if를 넘어갈 수 있기 때문에 추가적인 장치가 필요합니다. (이 부분을 고민하다가 포기하고 라업을 보면서 풀었습니다) 여기서 사용할 수 있는 게 now()와 sleep()입니다. 현재 시간을 나타내는 now()를 2로 나머지 연산(%) 해주면 0 또는 1이 됩니다. substr()의 두 번째 인자인 오프셋..

    [Lord of SQLInjection] zombie write-up

    [Lord of SQLInjection] zombie write-up

    문제 화면 입니다. 이전 문제인 ouroboros처럼 입력과 결과가 동일해야 문제가 풀립니다. 이전 문제와 다른 점은 replace의 ace를 필터링하고 _ 문자는 필터링하지 않습니다. 따라서 information_schema 테이블을 활용할 수 있습니다. 서치하던 중 information_table의 processlist라는 테이블에 현재 실행 중인 쿼리가 저장된다고 합니다. processlist 테이블의 컬럼은 위와 같습니다. 이 중 info에 쿼리가 저장되어 있습니다. info 컬럼을 조회하면 쿼리가 튀어나옵니다. 이 녀석을 이제 잘라줘야 합니다. 이렇게 잘라서 GET['pw']와 result['pw']를 똑같이 만들었지만 문제가 풀리지 않았습니다. 그 이유는 substr의 3번째 인수를 지정해주지..