Pass18
输入admin显示user agent信息,尝试通过user agent进行注入
a' or updatexml(1,concat(0x7e,substr(version(),1,31),0x7e),1) and '1'='#
当时不理解为什莫后面要加一个and语句 ,搜了一说sql语句后面可能还有其他结构,直接把后面注释掉可能导致语法错误,and '1'='#'使得#更像合法语句,顺理成章地把后面注释掉
有回显,构造报错注入,
a'or extractvalue(1,concat(1,database())) and '1'='#
爆库,后面按照常规构造语句就行了
...............
Pass19
这个和上一道题思路一样,就是修改referer
尝试sqlmap这是使用手册SQLMAP的下载安装和使用(Windows)_sqlmap下载-优快云博客
在sqlmap目录下不用python前缀就可以运行起来了,好吧简单题用sqlmap好慢啊,比手注还慢我不知道它请求n遍是有甚麽心事吗,最后还没请求出来,明明就是referer注入不晓得为啥不行
还是老实手注: a' or extractvalue(1,concat(1,database()) and '1'='#)
ok
Pass20
输入admin有cookie提示
显示被删除,不用post方法提交,有回显
爆出来了,后面常规操作就行了
再补充一下sql绕过知识
Sql 注入绕过 waf双写绕过出现关键字替换为空,那么SQl注入攻击也不会发生。用双写绕过。因为在过滤过程中只进行了一次替换。eg;:过滤了union 只要发现union 无论大小写都会被替换为空。这是就可以通过双 写uniunionon的写法来对过滤进行绕过。编码绕过1.URL编码在Chrome中输入一个连接,非保留字的字符浏览器会对其URL编码,如空格变为 、单引号'、左括号(、右括号)普通的URL编码可能无法实现绕过,还存在一种情况URL编码只进行了一次过滤,可以用两次编码绕过:page.php?id=1UNION 1,2,3,4…SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))示例代码中,前者是对单个字符十六进制编码,后者则是对整个字符串编码,使用上来说较少见一点2.Unicode编码Unicode有所谓的标准编码和非标准编码,假设我们用的utf-8为标准编码,那么西欧语系所使用的就是非标准编码了看一下常用的几个符号的一些Unicode编码:单引号: %u0027、%u02b9 、 %u02bc 、 %u02c8 、 %u2032 、 %uff07 、 � ' 、�、�空格:%u0020、%uff00 、 � 、�、�左括号:%u0028、%uff08 、 � ( 、�、�右括号:%u0029、%uff09 、 � ) 、 � 、 � 举例: ?id=10 � ‘ AND 1=2#SELECT 'Ä'='A'; #1两个示例中,前者利用双字节绕过,比如对单引号转义操作变成',那么就变成了� ' ,�\构成了一个款字节即Unicode字节,单引号可以正常使用3.缓冲区溢出绕过01.id=1 and (select 1)=(Select0xAAAAAAAAAAAAAAAAAAAAA)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,2602.,27,28,29,30,31,32,33,34,35,36–+其中0xAAAAAAAAAAAAAAAAAAAAA这里A越多越好,一般要求1000个以上