[BJDCTF2020]Easy MD5;[ZJCTF 2019]NiZhuanSiWei;[SUCTF 2019]CheckIn
[BJDCTF2020]Easy MD5
回显了select * from 'admin' where password=md5($pass,true)
这是md5的解释
若md5($pass,ture)的值存在'or '1
,就会使sql语句变成
select * from 'admin' where password=''or '1'
,
使sql语句变成一直正确的语句
(这里因为的原始16字符二进制格式由于浏览器对其进行了字符化处理,会乱码显示)
因为’or '1后肯定还会有其他字符,但是在mysql里,1后面的字符会被忽略,与or 1
的查询结果相同
这里输入符合条件的字符ffifdyop
,存在levels91.php
得到提示
if($a != $b && md5($a) == md5($b))
这是一个弱类型比较,我们可以使MD5加密后为0e开头,因为0e代表0的多少次方,它们始终相等
提交后得到md5加密后的强类型比较
md5函数不能加密数组,会返回false,故两个都返回false,就满足条件
[ZJCTF 2019]NiZhuanSiWei
这里没有写入权限,可以用php伪协议写入代码
data://text/plain,welcome to the zjctf
,
之后能包含文件,但不能为flag,我们可以读取到useless.php的源码,php://filter/read=convert.base64-encode/resource=useless.php
根据条件制作payload得到base64编码后的的useless.php
代码
根据源码可以得出password反序列化的payload
使用payload:
http://e6944542-79a0-4c5a-8e1c-93d253804a17.node4.buuoj.cn:81/?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
得到flag
[SUCTF 2019]CheckIn
上传.user.ini
需具备的条件
服务器脚本语言为PHP
对应目录下面有可执行的php文件
服务器使用CGI/FastCGI模式
.user.ini
有着类似于.htaccess
的作用,为php的配置文件
auto_prepend_file
自动包含文件
先上传.user.ini
在上传图片马,<?
被拦截,使用可以js格式
访问index.php时,会通过user.ini
加载1.jpg
,就会执行到一句话木马