創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,鄯善網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鄯善等地區(qū)。鄯善做網(wǎng)站價格咨詢:13518219792
SQL注入
是一種代碼注入技術(shù),過去常常用于***數(shù)據(jù)驅(qū)動性的應(yīng)用,比如將惡意的SQL代碼注入到特定字段用于實施******等。
SQL注入
的成功必須借助應(yīng)用程序的安全漏洞,例如用戶輸入沒有經(jīng)過正確地過濾(針對某些特定字符串)或者沒有特別強調(diào)類型的時候,都容易造成異常地執(zhí)行SQL語句。
SQL注入
是網(wǎng)站***中最常用的***技術(shù),但是其實SQL注入可以用來***所有的SQL數(shù)據(jù)庫。
創(chuàng)建SQLdb
數(shù)據(jù)庫
CREATE DATABASE SQLdb;
創(chuàng)建user_info
表
CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) DEFAULT NULL, `password` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入一條用戶數(shù)據(jù)
測試的用戶名是ansheng
,密碼as
insert into user_info(username,password) values("ansheng","as");
Python代碼
app.py
文件
#!/usr/bin/env python # -*- coding:utf-8 -*- import tornado.ioloop import tornado.web import pymysql class LoginHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.render('login.html') def post(self, *args, **kwargs): username = self.get_argument('username', None) pwd = self.get_argument('pwd', None) conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='as', db='sqldb') cursor = conn.cursor() temp = "select username from user_info where username='%s' and password = '%s'" %(username, pwd,) effect_row = cursor.execute(temp) result = cursor.fetchone() conn.commit() cursor.close() conn.close() if result: self.write('登錄成功') else: self.write('登錄失敗') application = tornado.web.Application([ (r"/login", LoginHandler), ]) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
HTML代碼
login.html
與app.py
文件在同級
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login" method="post"> <input type="text" name="username" placeholder="用戶名" /> <input type="text" name="pwd" placeholder="密碼" /> <input type="submit" /> </form> </body> </html>
演示效果
打開瀏覽器,輸入地址http://127.0.0.1:8888/login
填寫內(nèi)容如下:
用戶名:asas ' or 1 = 1-- asd
密碼:隨便填寫一串字母
如圖:
當(dāng)點擊提交
的時候是否會跳轉(zhuǎn)到登陸成功頁面?如果你的代碼和我一樣,那么就會跳轉(zhuǎn)到登陸成頁面
。
出現(xiàn)這個問題的主要原因就是因為我們使用了字符串拼接
的方式來進行SQL指令的拼接。
SQL指令拼接代碼
temp = "select username from user_info where username='%s' and password = '%s'" %(username, pwd,)
這是一個正常的SQL拼接出來的結(jié)果
select username from user_info where username='ansheng' and password = 'as'
這是一個非正常的SQL拼接出來的結(jié)果
select username from user_info where username='asas' or 1 = 1 -- asd' and password = 's'
聰明的你是否已經(jīng)看到其中的玄機了呢?--
通過Python
的pymysql
模塊來進行SQL
的執(zhí)行,在pymysql
模塊內(nèi)部會自動把”'
“(單引號做一個特殊的處理,來預(yù)防上述的錯誤
...... effect_row = cursor.execute("select username from user_info where username='%s' and password = '%s'", (username, pwd)) ......
#Python全棧之路 #Sql注入
當(dāng)前題目:9Python全站之路系列之MySQLSL注入
標(biāo)題鏈接:http://bm7419.com/article10/gosedo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站收錄、營銷型網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)