第十七届全国大学生信息安全竞赛-华东南分区赛
1签到+4web+4pwn
web-welcome
签到,Ctrl+U

web-submit
break
文件上传,有对内容检测,使用短标签绕过


fix
添加黑名单
| 1 |  | 
web-粗心的程序员
break
扫目录,得到www.zip
| 1 |  | 
home.php中会写入登录日志$str = "//登陆时间$time,$username $p";
用?><? phpinfo(); //截断注释输出phphinfo

或者写入一个换行后在xff中执行命令
fix
对于写入日志的两个参数添加黑名单
home.php
| 1 |  | 
web-Polluted
break
| 1 |  | 
python原型链污染secret_key
| 1 |  | 
有关键字被过滤了,转成unicode绕过
| 1 |  | 
污染后伪造key登录
| 1 |  | 

登录后看到语法标识符不对,使用variable_start_string替换
| 1 |  | 
| 1 |  | 
因为缓存的原因,先污染在访问即可

fix
增加黑名单
| 1 |  | 
web-bigfish
break
扫目录得到/admin和/login
访问admin会自动跳转到login,简单修改cookie就能直接登录
数据储存位置可以穿越目录,读取fish.js
| 1 |  | 
在login的时候执行了serialize.unserialize(str),可以打nodejs反序列化
| 1 |  | 
利用目录穿越拿到flag
fix
提示:应修尽修,xss
没有修复成功
pwn-ezwp
break
非预期:phpinfo中直接搜flag
预期解:
php.ini里可以看到引用了myphp.so
| 1 |  | 
ida分析
进入get_module函数,通过扩展函数表,可以看到myphp.so扩展导出了三个函数: myphp_test1,myphp_test2,phppwn

进入phppwn,发现会验证密钥后读取flag输出
但是这里len的类型是unsigned __int8,所以len=strlen(arg)&0xff。同时密钥长度32,限制长度24,可以使用整数溢出进行绕过

exp
字符串长度&0xff<0x18 即可
| 1 |  | 
加上无字母rce
| 1 |  | 
| 1 |  | 
fix
应该是需要修改字符串长度比较类型为长整型
pwn-cJSON
break
在delete功能中存在格式化字符串,利用格式化字符串可以获取shell

| 1 |  | 
fix
将delete功能中的printf函数修改为puts

在edit功能中可能存在栈溢出,修改memcpy的第三个参数

pwn-baby_jit
break
shellcode中有8字节是自定义的,利用这8字节进行二次写,实现orw
| 1 |  | 
fix
尝试了 修改指令单位大小,不使用浮点数进行偏移 没有防御成功
pwn-printf-master
break
利用栈中指向args和envs的指针数据修改printf函数返回地址,进行多次格式化字符串,最终修改printf的返回地址为gadget获得shell
| 1 |  | 
fix
在输出时使用了printf函数,修改为使用puts函数进行输出
