这是一次新手白帽子耗时一整天的sql注入经历,一整天只为寻找一个靶场注入点的艰难经历。
站点到手显示每个大的分类模块尝试,之后转到每一个大类下面的小功能模块大概都尝试一遍身心俱疲没发现注入点,于是着手于搜索框,又是一番折腾最终无果,于是继续下一个注册/登入界面 因为这个靶场是可以注册并登入的,于是注册登入又在改名字改密码一番折腾,结局并没有改变还是无果。快放弃了身心俱疲就随便点点,每一个站点都存在参数每一个都一样如果不是注入点而在后面加了“ ’ ”的话则会404,就这么随便一点,我在一个不起眼的地方找到了注入点这一刻差点哭出来,这明明就是一个简单的union注入的靶场而已。 哎~~~心酸啊,之后就好弄多了判断字段 好家伙48个 果断sqlmap 果然找到注入点之后一整天都不好用的sqlmap生效了,靶场通关了。
总结以下三点
1,注入点首先观察搜索框的地址是否是有与数据库交互,例如html这种几乎是不存在注入的所以要先判断是否有交互。
2,交互点一般是搜索栏、留言版、登入/注册页面、以及最利于观察的搜索栏的地址如果类似于http//www.xxx.com/index.phpid=1这种很大程度存在注入当然有些注入点不会这么一眼看出会有些比较复杂例如http://www.xxx.com:50006/index.phpx=home&c=View&a=index&aid=9 这样的地址其实也可能存在注入。
3,管他什么地址只要结尾是xx=1(数字)就注就完事了。
附上几个有用的语句:
order by x%23
length() 返回字符串的长度
substr() 截取字符串
mid() left() 从左侧开始取指定字符个数的字符串
concat() 没有分隔符的连接字符串
concat_ws() 含有分隔符的连接字符串
group_concat() 连接一个组的字符串
ord() 返回ASCII码
ascii()
md5() 返回MD5值
floor(x) 返回不大于x的最大整数
round(x) 返回参数x接近的整数
rand() 返回0-1之间的随机浮点数
sleep() 睡眠时间为指定的秒数
if(true,t,f) if判断
schemata mysql中所有数据库的信息
schema_name 所有数据库名
tables 数据库表中的信息
table_schema 记录数据库名
table_name 记录数据表名
columns 列信息
column_name 字段名
version() 数据库版本
database() 当前数据库名
user() 用户名
current_user() 当前用户名
system_user() 系统用户名
@@datadir 数据库路径
@@version_compile_os 操作系统版