鱼C论坛

 找回密码
 立即注册
查看: 2066|回复: 5

SQL注入的学习笔记之3

[复制链接]
发表于 2018-9-15 11:17:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
sql31.png

LAST_INSERT_ID():得到刚 insert 进去记录的主键值,只适用与自增主键
CONNECTION_ID()返回的值与INFORMATION_SCHEMA.PROCESSLIST表的ID列,SHOW PROCESSLIST输出的Id列和Performance Schema线程表的PROCESSLIST_ID列中显示的值类型相同。返回连接的连接标识(线程标识)。 每个连接都有一组在当前连接的客户端中唯一的ID。

这里不怎么理解,只能粗浅运用两个函数,网上资料一时间也差不多,如果查到会补充,或者有知道的大神,也可以帮忙补充一下。

3.2uinon语句提取数据

大致为跟随正常的查询语句,比如说查询users表,这是服务器允许你的合法查询。
而通过SQL注入,使用union查询命令注入,则可以通过users表执行查询password表等非法操作。
而这个前提是,两个表必须有相同的字段数,以及字段类型要一样,不然不同的部分就无法显示。
而在常规注入过程中,我们是不知道对方数据库具体信息的。
所以,就需要接下来的union select null,null,null猜解数据库个数
Order by n(n为数字)猜解数据表个数
Union select null,’text’,null猜解数据表类型
以及使用information_schema表枚举数据表名,列名等信息。
使用这些方法来辅助注入。

?id=1 union select null,table_name,null from information_schema.tables
?id=1 union select null,column_name,null from information_schema.columns
?id=1 union select username,password,null from users用注入得到的表名字段名和数据库名进行注入。

用到的某些参数:user()用户名
@@version查询版本

注:查询网上关于information_schema表的其他表,使用方法等。

介绍information_chema表的文章:https://blog.csdn.net/linyt/article/details/52966555



到这里,再回顾一下union查询命令注入的原理,看源代码关键部分:
$querry = "select * from users where id =".$_GET['id'];
GET取得值得:
select * from users where id =1 union select null,null,null;
???????
再MYSQL命令行里试验之后,这种格式是可行的。

接下来的3.4窃取哈希口令,也并没有搞清楚实际作用,总之记一下命令先:

Select user,password from mysql.user;提取mysql.user中存储的哈希口令
Select password(‘password’);通过password()函数计算哈希口令

3.4获取webshell


第四节SQL盲注利用

4.1 初识SQL盲注
SQL盲注是指在无法使用详细数据库错误消息或带内数据连接的情况下,利用数据库查询的输入审查漏洞从数据库提取信息或提取与数据库查询相关信息的技术。

常见的SQL盲注入场景:

1、提交一个导致SQL查询无效时,会返回一个通用错误页面,提交正确则会返回一个内容可被适度控制的页面。

2、提交一个导致SQL查询无效时,会返回一个通用错误页面,提交正确则会返回一个内容不可控的页面。

3、提交受损或不正确的SQL既不会产生错误页面,也不会以任何方式影响页面输出。

总的来说,就是在正常情况下,不知道对方服务器的php代码,完全未知的情况下利用注入语句获取信息,并注入对方服务器的操作。

4.2盲注技术-基于布尔

前面的加and 加’ union什么的都很好理解,主要看后面的SQL函数利用

这里由于作者没有提供sqlbool.php文件,我们还是以我们的自己的源代码为例。

"select * from users where id =".$_GET['id'];

GET取值后,语句格式为select *from users where id=[--- ---]
我们可以在[]中输入任何mysql支持的语法的格式,来达到我们控制mysql数据库进行非法操作的目的。
或是暴露数据,或是植入后门等等。
但由于mysql_querry()函数只能执行一条sql语句,所以我们的注入语句也只能是一条。
当然笔者也是萌新,所以也并不清楚有没有利用多条语句的方法,有的话可以欢迎在帖子下面分享给大家。
还有利用漏洞的SQL函数,和其他利用SQL注入漏洞的方法,也多多益善。

教程中介绍了一个SQL函数:SUBSTRING(str,pos,len)
作用教程中有些语法错误,我这里补充一下:
从str字符串中的pos位置,提取len个字符。

如第一例,?id=1 and substring(user(),1,1)=’r’  就是取出user()用户名字符串中的第一个字符,如果第一个字符是r的话,substring(user(),1,1)=’r’关系式的结果就为真,整条语句就为真,责网页会正确显示。
而如果用户名的开头字母不为r,那么关系式为假,网页显示错误。

4.3 基于时间的盲注

id=1 union select if(SUBSTRING(user(),1,4)='root',sleep(4),1),null,null

解析上述命令:如果用户名字符串的前四个字为’root’,那么网页延迟4秒,否则输出1

这里值得一提的是,SQL中的if语句格式为
if(ex1,ex2,ex3)
如果ex1位真,则执行ex2,为假执行ex3

基于时间的盲注和基于布尔,也就是逻辑的盲注原理感觉差不多,我也并没有明白基于时间的意义。
我的猜测,是当这是一种当逻辑注入被过滤时的绕过方案。

4.4 python自动化注入

不懂python的苦逼,看来必然要找时间学习python,简练的语言让我很心动。
这里就不做记述了。


至此sql注入学习中级篇结束了,还是一样,欢迎大家发表自己的看法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-18 13:14:50 | 显示全部楼层

回帖奖励 +1 鱼币

可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-18 21:41:19 | 显示全部楼层

回帖奖励 +1 鱼币

强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-31 09:07:54 | 显示全部楼层

回帖奖励 +1 鱼币

支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-31 09:59:25 | 显示全部楼层

回帖奖励 +1 鱼币

强烈支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-7 10:01:23 | 显示全部楼层

回帖奖励 +1 鱼币

66666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 18:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表