开始攻防世界的进阶
baby_web
想想初始页面是哪个。
我们首先想到index.php,访问。
点击网络,在消息头中找到flag。
Training-WWW-Robots
送分题,翻译一下那段话,介绍了robots.txt协议,搜索引擎中访问网站的时候要查看的第一个文件,
我们访问一下就发现了flag的位置跟新手练习区的robots一样。
php_rce
原理:ThinkPHP5框架底层对控制器名过滤不严,可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞。
这题的漏洞是关于ThinkPHP V5,随便百度一下拿一下payload,即可执行我们想要的操作。(这里也告诉我们相关比较明显提示的漏洞我们可以直接百度)
命令执行成功,查找flag位置。
最后查看flag内容。
Web_php_include
类型:文件包含漏洞
echo:输出用户想查询的信息,所以往后拼接hello,?:拼接符
方法一:page进行传参数,绕过while,执行其他语句,利用提交参数进行拼接,然后利用system函数进行LS查看。
?page=http://127.0.0.1/index.php/?hello=<?system(%22ls%22);?>
index.php主页面,
show_source:展示其他PHP网页信息。?page=http://127.0.0.1/index.php/?hello=<?show_source("fl4gisisish3r3.php");?>
记得加引号。
得到flag。
方法二:php伪协议
利用system函数获取的所有能够显示的文件内容,都是被浏览器进行了base64加密,不会显示在主页面上。
方法:?page=php://input POST提交
php://在使用时存在大小写区别,可大小写绕过。
这里使用hackbar一直提交失败,使用burp才成功了。
方法三:封装协议-data://
区别在于用get提交?page=data://text/plain,<?php system('ls');?>
supersqli
题目描述:随便注,来自强网杯2019
一看就是sql注入题目。
首先判断一下注入类型
为字符型,单引号。
判断字段数
3报错,2正常回显,所以字段数为2。
直接开始联合查询注入,
有一个正则表达式,把联合注入语句部分代码过滤了,这里我们试一下堆叠注入。
可以爆出数据,
也可以爆出表。
有两个表,这里不需要选择表,应该默认指定数据库,但是可以猜出数据库就是supersql,再加from supersql 果然这两个表属于supersql。
查询一下两个表名的字段,
记得字符串为表名操作时记得加反引号
观察两个表的字段,可以知道words表是默认查询的表,传入inject参数的值也就是赋值给了id。
所以我们可以修改数字表名为words表名,再修改flag为id这个字段,即可查询flag值,尝试一下。
使用rename修改表名,再使用alter修改字段名,这里记得要先把原来的words表名修改,不然修改不了。
语法:
修改表名
rename table 表名1 to 表名2
修改字段名
alter table 表名 change 字段名1 字段名2 数据类型。
输入1’ or ‘1’=’1 获得flag。
本题要一气呵成,如果分开写,后面会报错,导致无法执行我们想要执行的代码。
ics-06
发现url有个id值,想了半天不知道怎么弄,直接爆破id值结果就出来了。
Warm up(代码审计)
先F12查看源码,看到注释source.php,
访问一下,页面出现源码,
发现一个hint.php先访问,
发现flag在ffffllllaaaagggg里(暗示要访问四层目录)。再回去审查代码,
可以看到最后的include 是可以动态构造参数的,那应该就是解题关键了。
不过要经过三个判断
第一个:检查一个变量是否为空
第二个:是否为字符串
第三个:通过函数来检查
我们要构造的payload本身就满足前两点所以无视
重要是第三点的这个函数
函数作用是分三步检查传进来的参数是否满足白名单:
$whitelist = [“source”=>”source.php”,”hint”=>”hint.php”];
$_REQUEST 是通过 GET,POST 和 COOKIE 输入机制来传递参数,这里通过get传参。
后面就是构造payload,访问多个目录,得到flag
NewsCenter
这是一题简单sql注入题,不存在任何过滤。
方法一:手工注入
上传了爆表的,其它的类似。。。(记得把前面置空,不然查询的不是我们想要的结果)
方法二 sqlmap爆破
记得数据要加””,这种方式是通过post提交。
NaNNaNNaNNaN-Batman
下载文件,通过浏览器方式打开,有一个post提交的,但是输入什么都无反应,
再用记事本打开是一段js代码(乱码了),发现代码末尾有一个函数eval,修改成alert即可弹出正常代码。(文件保存格式要.html格式)
审计一下代码,大概看得懂,因为没学过js代码,想把它转成python代码运行,其实没必要,在控制台即可输入js代码,得到结果。
PHP in_array() 函数
in_array() 函数搜索数组中是否存在指定的值。
注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。
in_array(search,array,type)
1.函数mb_substr(a,m,n):截取a字符串第m位到第n位的内容并返回
2.函数mb_strpos(b,x):获取b字符串中,x字符/字符串第一次出现的位置
3.include目录穿越:include会把第一个/后面的路径作为访问路径来寻找文件
解密:逆向加法运算,base64解密,python脚本:
import base64
def python_decode(string):
zimu = “abcdefghijklmnopqrstuvwxyz”
rot_13 =””
for i in string:
if i.isdigit():
rot_13 += i
else:
try:
rot_13 += zimu[zimu.index(i)-13]
except:
rot_13 += zimu[zimu.index(i.lower())-13].upper()
fz = rot_13[::-1]
base = base64.b64decode(fz)
base = [chr(ord(i)-1) for i in base]
fz = base[::-1]
print “”.join(fz)
python_decode(“a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws”)