sql注入小总结

  目前metasploit魔鬼渗透测试营的书看到了第四章,在跟随书上步伐学习sql注入时,有些地方感到困惑,因此小结一下。

  1.P137 的绕过语句:Select * from * where user='admin' or '1=1' and password ='****'

  这是因为在sql语句中,and比or的优先级更高。所以先执行'1=1' and password='****'这一部分,即真and假,结果为假;再执行user='admin'or假这一部分,由于user=‘admin'存在于数据库里,即真or假得到真。所以能顺利执行where user=’admin‘,从而达到绕过的目的。

  2.P149的输入语句’or 1=1 -- '

  这里的注释符(双破折号)“--”要求后一个破折号紧跟至少一个空格符。同样为mysql的注释符还有#,因此P137的绕过也可以在用户名一栏填上admin'#'或者是admin' -- ',均能成功绕过。

  3.P155中关于information_schema的几点。

  查询语句 http://www.XXX-Web.com/view.php?hidRecord=1 and 1=2 union select 1,2,3,4,5,6,version(),database(),9,10,11,user(),13,group_concat(schema_name),15,16,17,18,19,20 from infromation_schema.SCHEMATA --

  这里第一步先是查看数据库名,SCHEMATA是关于数据库的信息。在网上找到说法,mysql中schema等价于数据库名。

  第二步查看当前数据库的表名。相应的查询语句改为select XXX,group_concat(table_name) from information_schema.tables where table_schema=database() --

  PS:上面的几个函数:version()是查看当前数据库的版本号,database()是查看当前数据库名,user()查看当前用户名。

  第三步查列名,对应地修改查询语句为select XXX,group_concat(column_name) from information_schema.columns where table_name=news --

  4.P147的passwd文件跟shadow文件

  经查阅,passwd文件的格式为:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell。由于该文件对所有用户都可读,因此现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

你可能感兴趣的:(metasploit自学)