BUUCTF
[HCTF 2018]WarmUp
点击题目所给链接,一个大大的滑稽
右键查看源代码,发现提示去看source.php,访问后页面如下:
大致阅读代码发现自定义类emm,定义静态方法checkFile,有一个参数。在代码的结束位置调用该方法且将接受到的参数file传入,如果为true则包含file文件,否则输出滑稽。再去看方法里面的代码。
首先定义一个白名单,if里面的意思是如果page没有设置或者不是字符串的话输出"you can‘t see it",并返回一个false
这个if判断page是否在之前定义的白名单,在这里可以尝试将hint.php用file提交看看
提示flag在ffffllllaaaagggg里面,接着看下一个if
这个if算是关键代码了,利用函数mb_substr()函数对page进行截取,截取的位置从0开始,到出现问号的地方结束,即可以构造payload进行绕过,source.php?file=hint.php?ffffllllaaaagggg,提交后发现页面的滑稽不见了,应该是绕过了
最后一个if循环没啥好看的,和第一个差不多。代码都看完了,怎么没出flag???然后去看了人家的wp,发现还有一个路径的问题,加上相对路径就可以包含ffffllllaaaagggg
[极客大挑战 2019]EasySQL
看题目应该是一个sql注入,点击题目所给链接
先随便输一个账号密码点击登录
看起来像注入点,加一个单引号看是否报错
换成双引号,正常显示密码错误
判断为单引号闭合,判断列数,通过尝试发现3时正常回显
下一步查看回显点
直接得到flag
[极客大挑战 2019]Havefun
进入题目界面如下
右键查看源代码,发现提示
构造paylaod提交cat=dog,得到flag
[强网杯 2019]随便注
进入题目界面如下,
通过测试发现为单引号闭合,判断方式为加单引号报错,加双引号不报错,遂判断为单引号闭合
通过测试发现列数为2,下一步观察回显点
发现对关键字做了过滤,尝试大小写绕过失败,尝试使用报错注入,得到使用数据库
http://69514f09-3bfd-4843-b9f1-8f123a7ab127.node3.buuoj.cn/?inject=hahahah‘ and 1=extractvalue(1,concat(0x7e,database(),0x7e)) --+
到这里报错也不能获得更多的有效信息,求助人家的wp,发现均使用了堆叠注入,去复习了一下堆叠注入
直接利用?inject=1‘;show tables;--+查看表名
SET; # 用于设置变量名和值
PREPARE stmt_name FROM preparable_stmt; # 用于预备一个语句,并赋予名称,以后可以引用该语句
EXECUTE stmt_name; # 执行语句
{DEALLOCATE | DROP} PREPARE stmt_name; # 用来释放掉预处理的语句
构造payload
-1‘; set @sql=CONCAT(‘se‘,‘lect * from `1919810931114514`;‘); prepare stmt from @sql; execute stmt;
发现过滤了set和prepare,大小写进行绕过
成功得到flag
参考大佬解题思路:https://www.cnblogs.com/chalan630/p/12583667.html
[SUCTF 2019]EasySQL
[ACTF2020 新生赛]Include
[极客大挑战 2019]Secret File
[ACTF2020 新生赛]Exec