第十七届全国大学生信息安全竞赛-华东南分区赛
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函数进行输出