본문 바로가기

분류 전체보기

(214)
Webhacking.kr 1번 ---------------------
Webhacking.kr 52번 view-source 소스코드 일단 클리어를 하려면 admin으로 로그인하고 remote ip가 172.17.0.~가 되어야함 프록시를 줬음 벞스에서 보던거랑 거의 유사함 sql injection으로 admin으로 로그인한다 처음에 admin page에서 뭘 해보려다 삽질이란걸 알게됨 이 문제는 문제에서 준 proxy를 활용해야함 괜히 준게 아니였음 proxy로 바로 들어가면 Response에 메인화면과 같다 지금 url은 proxy.php?page=/ 이렇게 되어있는데 proxy.php?page=/admin/ 이렇게 주게되면 admin page의 response가 뜸 실제 admin page에 admin으로 로그인 했지만 여기선 Login Fail이 떠있음 실제로 벞스에서 /admin/으로 갈 때 re..
Webhacking.kr 13번 참일 때 거짓일 때 필터링 =, , and, ||, &&, 공백, 0x, -, /, *, like, left, right, mid, ascii, hex, where, limit, union, order 등 되는 것 or, select,0b, ', substr, sleep,^,ord, if, database(), information, in, reverse 등 필터링과 되지 않은 것들은 더 있을 것인데 중요한 것만 추렸다 데이터베이스명 알아내기 no=(0)or(if(length(database())in(7),1,0)) ord(?)=99 'c' 아마 chall13이지 싶음 이제 테이블을 찾아야하는데 우선 테이블명의 길이부터 알아낸다 테이블명의 길이를 알아내는 쿼리문으로는 if((select(length(mi..
Webhacking.kr 9번 no=3의 id값이 password라고 함 쿼리문은 아마 no의 값으로 id를 꺼내오는 단순한 구조인거같음 select id from 테이블 where no=1 이런구조? no의 값에서 injection을 해야하는 것 같은데 필터링된게 엄청 많음 =, , ||, &&, or, and, /**/, 공백, char, hex, select, left, ', ", # 더 있는거같다 그래도 필터링을 우회하여 injection이 먹히긴 함 공백은 괄호를 적당히 사용하면 될거같음 0은 없는 것 같으니 이걸로 씀 no=if(length(id)like(5),1,0) id의 길이가 5이면 no=1이되고 아니라면 0번페이지를 호출할 거임 근데 하다보니 신기한 거였는데 if문의 참일 경우 반환되는 값에 따라 id가 no=1의..
Webhacking.kr 57번 se가 secret체크박스의 값임 message와 secret에 addslshes함수 적용 se에서 select, and, or, not, &, |, benchmark 필터링 쿼리문은 insert into chall57(id,msg,pw,op) values('{$_SESSION['id']}','{$_GET['msg']}','{$flag}',{$_GET['se']}) se에서 sql함수를 사용가능해 보임 일단 이문제에서 볼수있는건 메세지를 보냈을 때 Done 밖에 없음 그래서 time based injection이 생각나 해보기로함 msg=1&se=if(length(pw)>0, sleep(2), 0) 이런식으로 해서 작동되는지 보니까 sleep이 먹힌다 msg=1&se=if(length(pw)=24, sl..
Webhacking.kr 45번 id와 pw에 addslashes함수 적용 id값은 멀티바이트 문잘 바뀜 id와 pw에서 admin, select, limit, pw, =, >, select id from chall45 where id='~~' || id like 0x61646d696e..
Webhacking.kr 40번 get방식으로 전송된다 이것 저것 해보다 no에서 injection이 가능 no값에 2||no=2를 주면 이런 admin페이지 같은게 나온다 admin의 pw를 blind injection으로 구하면 됨 일단 pw의 길이를 알아내기위해 0||id='admin'&&length(pw)>0을 해봤는데 fail이라고 뜬다 삽질하다 hex값으로 저장되있는것을 찾음 admin을 0x61646d696e이렇게 바꿔서 보내주어야한다 0||id=0x61646d696e&&length(pw)=10 admin의 pw는 10자리 pw도 hex값으로 저장되어있을것 같으니 hex값으로 찾는다 첫글자는 0x6c인걸로 찾아놓고 import requests url = "https://webhacking.kr/challenge/web-29..
Webhacking.kr 22번 admin으로 로그인 해야하고 컬럼명은 id와 pw id: guest pw: guest 로그인하니 pw가 해싱되어있음 injection이 가능한지 id: guest' and 1=1# pw: 1234 로 해봄 id: guest' and 1=2# pw: 1234 로 했을 때 블라인드 인젝션이 가능함 id: admin' and length(pw)=32# pw: 1234 admin의 pw도 해싱되어있는 것 같음 import requests url = "https://webhacking.kr/challenge/bonus-2/index.php" session = requests.Session() cookie={"PHPSESSID":"gfphkap47rugn7sgmm59tukl35"} password = "" for..