CG CTF WEB SQL Injection
生活随笔
收集整理的這篇文章主要介紹了
CG CTF WEB SQL Injection
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://chinalover.sinaapp.com/web15/index.php
題解:
<!-- #GOAL: login as admin,then get the flag; error_reporting(0); require 'db.inc.php';function clean($str){if(get_magic_quotes_gpc()){$str=stripslashes($str);}return htmlentities($str, ENT_QUOTES); }$username = @clean((string)$_GET['username']); $password = @clean((string)$_GET['password']);$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';'; $result=mysql_query($query); if(!$result || mysql_num_rows($result) < 1){die('Invalid password!'); }echo $flag; --> Invalid password!注意上面clean function中的htmlentities()函數,它會把輸入字符中的 ’ 或者 ” 轉變為html實體,這樣一來就無法閉合源代碼中的 ’ 了,還有就是,如果php的magic_quotes_gpc是開啟狀態的話,我們輸入的轉義符也會被去掉的,不過既然這道題目能做,說明我們是可以使用轉義符 \ ,我們解這道題的關鍵就是使用轉義符 \ 來讓源代碼中?
'SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';'?$username后面的 ’ 失效,只要 這個 ’ 失效,就能閉合name=后面的 ’ ,要達到這一目的,我們只需要讓username=admin \即可,讓后使password的值為一個永真式(or 1=1)就可以得到這道題的flag?
這樣提交的數據,會導致源代碼中的SQL語句變為:
注入語句?username=admin \&password=or 1=1%23?
%23是#的URL編碼?
總結
以上是生活随笔為你收集整理的CG CTF WEB SQL Injection的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CG CTF WEB 密码重置
- 下一篇: CG CTF WEB SQL注入1