SQL注入(一)–原理介绍和基础

前言

最近刚刚结束afl的学习,而web方向在开始学习SQL注入。我个人觉得新手入门SQL注入有些难,而且碰到CTF题目也不太敢下手,所以在这里简单说一下新手需要注意的点。

正文

0x01 SQL注入原理介绍

当Web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。

所以sql注入漏洞的本质是将用户输入的数据当做代码来执行。

sql注入的两个关键条件:用户可以控制输入的内容;web应用把用户输入的内容带进数据库执行。

0x02 SQL注入基础

常用函数

system_user():   系统用户名

user():   用户名

current_user():  当前用户名

session_user():   链接数据库的用户名

database():  数据库名

version():   MySQL数据库版本

load_file():   转成16进制或者10进制 MySQL读取本地文件的函数

@@datadir:  读取数据库路径

@@basedir:  MySQL安装路径

@@version_compile_os: 操作系统

group_concat():将括号中的所有参数拼接成一个字符串

substr(str,start,length):截取str字符串中从start开始,长度为length的字符串

必记的一库三表

一库:information_schema(MySQL默认数据库)

三表:

0x01 SCHEMATA:存储了MySQL下每一个数据库的相关信息

  • schema_name(字段):数据库名

0x02 TABLES: 存储了MySQL下每一个表的相关信息

  • TABLE_NAME(字段):数据表名
  • TABLE_SCHEMATA(字段):该数据表属于哪一个数据库

0x03 COLUMNS:存储了MySQL下每一个数据表中的所有列名

  • COLUMN_NAME(字段):字段名称
  • TABLE_NAME(字段):该字段属于哪一个数据表
  • TABLE_SCHEMA(字段):当前字段所属数据表所在的数据库名称

注意:这三张表在information_schema数据库下面,在SQL注入过程中不能直接指定表名,要使用“数据库名.数据表名”的形式,例如:information_schema.tables

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

感谢大家的耐心阅读,如有疑问,敬请在评论区留言!本文为明赫IT大本营的原创文章,经实践,测试,整理后发布。如需转载请联系作者获得授权,并注明转载地址:https://terry906.top/sql%e6%b3%a8%e5%85%a5%ef%bc%88%e4%b8%80%ef%bc%89-%e5%8e%9f%e7%90%86%e4%bb%8b%e7%bb%8d%e5%92%8c%e5%9f%ba%e7%a1%80/
由于本人是学生党,维护服务器一直是用爱发电的状态。如果您恰巧财力雄厚,感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇