免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
php – 如何演示二階SQL注入?

所以我一直在嘗試復(fù)制二階SQL注入.這是我準(zhǔn)備的兩個基于php的網(wǎng)站的示例模板.我們把它稱為選民登記表.用戶可以注冊,然后您可以檢查您是否是注冊選民.

insert.php

<?php$db_selected = mysql_select_db('canada',$conn);if (!db_selected)    die("can't use mysql: ". mysql_error());$sql_statement = "INSERT into canada (UserID,FirstName,LastName,Age,State,Town)                    values ('".mysql_real_escape_string($_REQUEST["UserID"])."',                    '".mysql_real_escape_string($_REQUEST["FirstName"])."',                    '".mysql_real_escape_string($_REQUEST["LastName"])."',                    ".intval($_REQUEST["Age"]).",                    '".mysql_real_escape_string($_REQUEST["State"])."',                    '".mysql_real_escape_string($_REQUEST["Town"])."')";echo "You ran the sql query=".$sql_statement."<br/>";$qry = mysql_query($sql_statement,$conn) || die (mysql_error());mysql_close($conn);Echo "Data inserted successfully";}?>

select.php

<?php$db_selected = mysql_select_db('canada', $conn);if(!db_selected)    die('Can\'t use mysql:' . mysql_error());$sql = "SELECT * FROM canada WHERE UserID='".addslashes($_POST["UserID"])."'";echo "You ran the sql query=".$sql."<br/>";$result = mysql_query($sql,$conn);$row=mysql_fetch_row($result);$sql1 = "SELECT * FROM canada WHERE FirstName = '".$row[1]."'";echo "The web application ran the sql query internally=" .$sql1. "<br/>";$result1 = mysql_query($sql1, $conn);$row1 = mysql_fetch_row($result1);mysql_close($conn);echo "<br><b><center>Database Output</center></b><br><br>";echo "<br>$row1[1] $row1[2] , you are a voter! <br>";echo "<b>VoterID: $row[0]</b><br>First Name: $row[1]<br>Last Name: $row[2]    <br>Age: $row[3]<br>Town: $row[4]<br>State: $row[5]<br><hr><br>";}?>

因此,我故意使這個易受攻擊,以顯示二階SQL注入如何工作,用戶可以在第一個名稱部分輸入代碼(我目前卡住的地方,我嘗試了很多不同的方式,但似乎我無法得到它可以做任何事情).
然后當(dāng)一個人想要激活他在第一個名字部分中插入的代碼時,他只需輸入用戶ID并插入代碼即可.

例如:
我將在insert.php頁面中輸入:
userid = 17

firstname =(我需要在這里注入一些東西)

lastname = ..

年齡= ..

鎮(zhèn)= ..

州= ..

然后,當(dāng)我檢查我的詳細(xì)信息并輸入17時,將激活注入的SQL腳本.
我可以舉幾個例子來說明我可以通過這種方式展示哪種漏洞?

解決方法:

使用名字:

' OR 1 OR '

這將在第二個SQL中生成一個where子句

WHERE FirstName = ” OR 1 OR ”

因此,結(jié)果將是表格中的第一條記錄.

通過添加LIMIT子句,您可以從表中提取所有行:

‘ OR 1 ORDER BY UserID ASC LIMIT 0, 1 —

顯然它一次只能提取1行,所以你需要重復(fù)這一行并在LIMIT中增加0.此示例使用注釋 – 終止剩余的SQL,否則會導(dǎo)致查詢失敗,因為它會在LIMIT之后添加單引號.

以上是一個簡單的例子,更復(fù)雜的攻擊是使用UNION SELECT,它可以通過使用information_schema來訪問整個數(shù)據(jù)庫.

您還在其中一個查詢中使用addslashes().這不像mysql_real_escape_string()那樣安全,反過來:使用其中任何一個轉(zhuǎn)義引號都不如使用預(yù)處理語句或參數(shù)化查詢(例如PDO或MySQLi)那樣安全.

來源:http://www.icode9.com/content-2-245051.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP+MySQL會員系統(tǒng)功能
一個PHP的SQL注入完整過程
php執(zhí)行數(shù)據(jù)庫查詢返回json格式數(shù)據(jù)
php把數(shù)據(jù)表導(dǎo)出為Excel表的最簡單、最快的方法(不用插件)
php檢查用戶名是否已在mysql中存在
編程語言php 表格問題,該怎么解決
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服