SQL注入之临时表

一、什么是临时表:

  • 是建立在系统临时文件夹中的表;
  • 只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间;
  • 如果使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表

二、临时表生成场景:

该实验的原始表格为:

性质1:

当我们查询一条不存在的信息时,便会返回一张临时表,如果查询语句的表不存在或没有规定所查询的表,那么临时表中的列名也为所查询的信息,也就是说列名和字段内容相同,如下

 

性质2:

如果查找语句含有表格名,并且表格存在的话,那么查询不存在的信息,将会返回一个完整的表格,如下

性质3:

如果查询语句带有where约束条件,但约束条件为假时,会返回一张只有列名的空表,如下

三、临时表与union进阶利用:

我们可利用带有where的查询语句,当其后面的约束语句为假时,也就是约束的条件不存在时,返回的那张只有列名的表,从而进行sql注入创建一张我们想要的表

例句为

select * from zw where tool='fff' union select 5,5;

在表的tool列中,并没有“fff”这条数据,所以只会返回一张只有列名的空表,但是后面有union函数

union函数的性质为:把查询到的表格,依次合并为一张表格,并且不保留除第一个表格之外的其他表格的列名,只是把其他表格的数据依次追加到第一个表格之后,所有的表格都=共用第一张表格的列名

当第一个表格只有列名时,第二条语句查找不存在的数据,会返回数据本身,也就是借助了第一个表格的列名,从而巧妙的修改了返回的内容。

四、利用场景:

假设有一个登陆页面

此页面的验证机制为从数据库查询账号密码,进行校验

查询语句为

select user,password from users where user="input";

此语句根据我们输入的用户,在数据库查找相应的用户名与密码,再与我们输入的用户名和密码进行比较

这里我们便可利用union函数构造一张新表进行绕过

这是用于实验的初始表格:

我们可以看到常规情况下,我们需要用户名为admin,密码为123456才可登陆成功

但我们利用通过以下语句

select user,password from users where user="6666" union select "admin","admin";

payload为:

6666" union select admin,admin

构造一张用户名与密码均为admin的临时表来实现绕过

执行结果为:

暂无评论

发送评论 编辑评论


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

冀公网安备 13108202000889号

| 鲁ICP备2023011162号

声明:本站中用到的所有图片图标,均来源网络,如有侵权请及时联系删除
Theme Argon