Webhacking.kr 29번 문제를 풀어보도록 하자


29번 문제 클릭



아래와 같이 28번 문제와 비슷하게 업로드 할 수 있는 화면이 나오고


Blind SQL Injection이 아니니 다른 방법으로 풀라고 나옵니당


select password from c29_tb 라는 엄청난(?) 힌트도 있다



그래서 파일을 한 번 업로드 해보았다



파일이 존재 합니다.



그래서 파일명을 조금(?) 길게 업로드 해보았다


아래와 같이 time 과 자신의 ip 그리고 file 명이 테이블로 출력되었다



프록시 프로그램을 이용하여 한 번 넘어가것을 잡아보았다



filename 만을 받아가고 있는거 보니


time은 서버에서 정하는거 같다


그렇다면 이 문제를 풀려면


Blind SQL Injection이 아닌 방법으로 풀려면


파일명에 SQL 쿼리문을 넣고 끝을 주석 처리 함으로써


select password from c29_tb의 결과를 뽑아내는 방법으로 시도해 봐야 겠다


아래와 같이 zxzx'),('zxzx','zxzx','zxzx');# 을 입력하였더니



Done 이라는 결과가 나왔다


쿼리로 전달되는 값이 IP, Time, 파일명 이렇게 3가지일 거라는 예측이 가능하고


또 예측할 수 있는 점은 입력한 IP가 다르기에 화면에 표시가 되지 않는거 같다는 점이다



IP 주소를 아스키 코드로 변환 하여 ( . 이 필터링 되기 때문에) 입력하여 보았다



Done 이지만 화면에 보이지 않는 걸로 보아선 잘 못됐다는걸 알 수 있다


'' 를 빼야하거나 쿼리문에서 위치기 잘못 되었거나


다른 필터링에 걸리거나 일거 같다



그래서 아래와 같이 위치를 바꾸고 ''도 제거한 뒤에 시도해 보았다



이번엔 화면에 표시가 되었다



그럼 File name은 겹치지 않게 IP는 자신의 IP로 설정하고


time 위치에 select password from c29_tb를 넣어보면..



아래와 같이 Password가 나온다



Auth 페이지에 패스워드를 입력하면~~



29번 문제 클리어~


정~~말 많이 푼거 같은데 아직도 엄청 남았다!!!!!!


미쳐붜린당ㅋㅋ


한 문제 푸는뎅 정말 오랜 시간이 걸리고 정신적으로 힘든뎅


재밌긴 하당ㅋㅋ