培训小比赛wp(web方向)
WEB:
[极客大挑战 2019]BabySQL
BUU UPLOAD COURSE 1
[ACTF2020 新生赛]Exec
[RoarCTF 2019]Easy Calc
BabySQL
进入就是登录界面,通过题目可以直接判断出是sql注入,先随便输入用户名和密码
得到注入的参数
简单测试一下
发现存在sql注入漏洞
尝试万能密码能不能直接成功登录
结果失败了,而且报了语法错误
我当时直接卡在这了,想不出为什么。一方面是因为做的题比较少,对于会考的点不太熟悉,更重要的一点是mysql只是匆忙过了一遍语法,不够熟练,所以我一直以为是自己的语句写错了,有什么语法问题,另一方面,我以为他的用户名和密码是查询了两次才会导致这个结果。不管我当时怎么想的,现在试试看其他查询语句,看看为什么会导致这个结果。
对应的错误是
payload
对应的错误
我用了翻译软件,所以会有中文,不用在意。从order by的查询错误就很明显了(做题的时候就是没想到。。),是替换过滤,order 变成了der,初步就可以看出or,by,union,select被替换过滤了。我们尝试一下双写,看他是不是只是最简单的替换
果然这次就没有报语法错误了,只是最简单的一次替换
我们尝试用order by子句,判断一下select查询的列数
可以判断出select的列数是3
哦对,回到之前被替换过滤的问题,我们虽然知道一些被替换的关键字,但不是全部,我们虽然可以直接查看结果,只要一有报错就说明有关键字被过滤了,不过,我们也可以直接写一个简单的小脚本fuzz一下,来得知哪些总共有哪些字符被过滤了。
结果是
被过滤的字符有: ['!=', '#', '&', '&&', '*', '+', '--+', '-- -', '-- ', '/**/', '<>', '^', '|', '||', '%0a', '%a0', '8', 'admin', 'alert', 'and', 'ascii', 'benchmark', 'between', 'by', 'case', 'char', 'column', 'columns', 'concat', 'concat_ws', 'count', 'create', 'database', 'delete', 'else', 'end', 'exp', 'extractvalue', 'f', 'ffifdyop', 'floor', 'from', 'greatest', 'handler', 'hex', 'information', 'insert', 'into', 'like', 'limit', 'load_file', 'mid', 'mod', 'order', 'outfile', 'rand', 'regexp', 'select', 'sleep', 'substr', 'substring', 'union', 'where', 'xor']
里面难免有一些重复的,比如说information被过滤,只是过滤了or而已,我以为我们有这个意识就可以了。
发现常见的过滤字符除了之前测试到的几个,还有 and,from,where,接下来就可以开始构造注入语句了。
算了写了一半发现并不好用,有些莫名的错误,只能做参考。。无视这个脚本吧。
构造语句
http://38790651-55c5-4323-8155-3df620897ffd.node4.buuoj.cn:81/check.php?username=1%27%20ununionion%20seselectlect%201,1,group_concat(schema_name)%20frofromm%20infoorrmation_schema.schemata%23&password=1
初步判断,第三位就是回显位,一次类推,可以测得二三位是回显位
爆表
爆列名
爆数据
flag{281fbb9b-7f22-4b95-a4e5-86a58b6d2608}
BUU UPLOAD COURSE 1
从题目和页面都可以看出来是文件上传
先随便上传一个文件,里面加一句一句话木马
发现上传成功,只是文件名后缀被修改了,再结合
猜测应该同时存在文件包含,配合给的文件路径,尝试一下蚁剑连接,发现成功。
除此之外,既然有文件包含,我们也试一下伪协议
http://178b1ba1-bfcf-4c94-8bc3-b561c173cb43.node4.buuoj.cn:81/index.php?file=php://filter/convert.base64-encode/resource=index.php
但很可惜,发现被过滤了
我只试了几个常见的伪协议,并且在文件上传的时候,我并没有尝试其他的更改绕过强制修改文件名后缀的方法,如果感兴趣可以尝试一下,欢迎评论。
[ACTF2020 新生赛]Exec
写个ping自然想到命令执行,简单尝试绕过一下
127.0.0.1;ls
尝试cat一下index.php看一下源码
发现啥也没过滤。。
然后ls一下根目录就发现flag了。
[RoarCTF 2019]Easy Calc
题目显示是计算器,我就不按正常的来,直接输入一个a*a a/a
都提示算不来,不过显示页面感觉是前端显示,就尝试看一下源码
发现真的是前端验证,还发现了好像有一个calc.php的文件,而且很奇怪的一点,他传参不是直接传如内容,先是加了个单引号,这也和后面的一个waf有关,先去访问一下calc.php
直接就给了源码
大致就是代码执行
但是很奇怪的一点就是,只要输英文字母就会报错,而且这错误和给的php源代码完全无关
经过一系列尝试和老师提醒,发现需要加个空格才行
和前面的js代码奇怪之处有点类似,据说是php解析漏洞,但是没个具体答案,希望有大佬能够解释一下这个waf是怎么实现的
后面就很简单了,首先不能有引号,先看一下phpinfo()
因为现在都是动态flag,有可能存在搭建docker的时候,没有删flag的环境变量,先扫一眼
发现并没有,查看了一些禁用的函数,我能想到的就是全函数代码执行,因为引号被过滤了。如果有其他方法欢迎评论。
既然打算使用全函数代码执行,就查看一下disable_functions
发现system等命令执行函数被禁用了,那就先看一下目录文件(这里经老师题型发现数字也能使用,就可以采取偷懒点的方法)
然后show_source()一下f1agg文件就行
当然全部采取函数的方法也可以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」