问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样才能成为一名白帽子,挖掘漏洞需要哪些方面的知识,要看哪些书,紧紧学挖漏洞而已,望大神指导,有收

发布网友 发布时间:2022-04-10 22:58

我来回答

2个回答

懂视网 时间:2022-04-11 03:19

SQL注入经常出现在登陆页面、和获取HTTP头(user-agent/client-ip等)、订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTTP头里面的client-ip和x-forward-for。

 

1.普通注入

普通注入是指最容易利用的SQL注入漏洞,比如直接通过注入union查询就可以查询数据库,一般的SQL注入工具也能够非常好地利用。普通注入有int型和string型

测试环境搭建:

数据库名为test  数据库表名userinfo 以下时数据库数据

 技术图片

 

 技术图片

 

 

 

测试出SQL注入漏洞

 技术图片

 

 

从上面我们可以看出我们使用union查询到当前的用户

从上面的测试代码中可以发现,数据库操作存在一些关键字,比如 select from、mysql_connect、mysql_query、mysql_fetch_row等,数据库的查询方式还有update、insert、delete 我们在做白盒审计时,只需要查找这些关键字,即可定向挖掘SQL注入漏洞

 

 

2编码注入

程序在进行一些操作之前经常会进行一些编码处理,而做编码处理地函数也是存在问题地,通过输入转码函数不兼容地特殊字符,可以导致输出地字符变成有害地数据,在SQL注入里,最常见地编码注入是Mysql宽字节以及urldecode/rawurldecode函数导致的

2.1宽字节注入

在使用PHP连接mysql的时候,当设置set character_set_client=gbk 时会导致一个编码转换的注入问题,也就是我们所熟悉的宽字节注入。当存在宽字节注入漏洞时,注入参数里带入%df%27,即可把成程序中过滤的(%5c)吃掉。

举个例子

我们可以看一个例子当我id=1加上‘号提交的时候 它将’号前面加了很明显这样时注入不成功的。

 技术图片

 

 

但是我们如果提交/index.php?id=1%df’ and 1=1%23  由于单引号会被自动转义成‘ ,前面的%df和转义反斜杠(%5c)组合成了%df%5c,就是一个字,这时候单引号依然存在于是就成功闭合了前面的单引号

 技术图片

 

 

出现这个漏洞的原因时PHP连接mysql的时候执行了如下设置

Set character_set_client=gbk

告诉mysql服务器客户端来源数据编码时GBK,然后mysql服务器对查询语句进行GBK转码导致反斜杠被%df吃掉,而一般都不是直接设置character_set_client=gbk

告诉mysql服务器客户端来源数据编码时GBK,然后Mysql服务器对查询语句进行GBK转码导致反斜杠被%df吃吃掉,而一般都不是直接设置character_set_client=gbk,通常设置方法时SET NAMES ‘gbk’,但其实SET NAMES ‘gbk‘不过是比character_set_client=gbk多干了两件事而已,SET NAMES ’gbk‘等同于如下代码:

SET

Character_set_connection=’gbk’,

Character_set_results=’gbk’,

Character_set_client=gbk

这同样也是存在漏洞的,另外官方建议使用mysql_set_charset方式设置编码,不幸的时它也知识调用了SET NAMES,所以效果也是一样的。不过mysql_set_charset调用SET NAMES之后还记录了当前的编码,留着给后面mysql_real_escape_string处理字符串的时候使用,所以在后面只要合理地使用mysql_real_escape_string还是可以解决这个漏洞的,关于这个漏洞的解决方法:

(1)     在执行查询之前先执行SET NAMES ‘gbk‘,character_set_client=binary设置character_set_client为binary。

(2)     使用mysql_set_chharset(‘gbk‘)设置编码,然后使用mysql_real_escape_string()函数被参数过滤。

(3)     使用PDO方式,在PHP5.3.6及以下版本需要设置setAttribute(PDO::ATTR_EMULATE_PREPATES,FALSE);来禁用prepared statements的仿真效果

宽字节注入挖掘关键字:

SET NAMES

Character_set_client=gbk

Mysql_set_charset(‘gbk‘)

 

环境搭建

数据库沿用普通注入里面的数据库

 技术图片

 

 

测试出SQL注入漏洞

 技术图片

 

 

mysql的特性,因为gbk是多字节编码,两个字节代表一个汉字,所以%df和后面的也就是%5c变成了一个汉字“運”,而’逃逸了出来。

宽字节挖掘关键字

SET NAMES

Character_set_clent=gbk

Mysql_set_charset(‘gbk’)

Mysql_set_charset(‘gbk‘)

 

 

2.2二次urldecode注入

只要字符被进行转换就有可能产生漏洞,现在web程序大多都会进行参数过滤,通常使用addslashes()、mysql_real_escape_string()、mysql_escape_string()函数或开启GPC的方式进行防止注入,也就是给单引号、双引号、反斜杠和NULL加上反斜杠转义。如果某处试用了urldecode或者rawurldecode函数,则会导致二次解码生成单引号而引发注入。原理是我们提交参数到webserver时,webserver会自动解码一次

测试环境搭建:

 技术图片

 

 技术图片

 

 

 

我们可以看url部分%25经过第一次转码后的结果时%所以拼接后面的成为%27 而%27再经过urldecode经过第二次转码成为单引号成功引发注入

二次urldecode挖掘关键字

Urldecode

Rawurldecode

 

 

3.漏洞防范

在PHP中可以利用魔术引号来解决,不过魔术引号在PHP5.4后被取消,并且gpc在遇到int型注入时也会显得不那么给力了,所以通常用的多的还是过滤函数和类,像discuz、dedecms、phpcms等程序里面都使用过滤类,不过如果单纯的过滤函数写的不够严谨,也会出现绕过的情况,像这三套程序都存在绕过问题。当然最好的解决方案还是利用预编译的方式。

1.   gpc/rutime 魔术引号

通常数据污染有两种方式,一种格式应用被动接受参数,类似于GET、POST等;还有一种是主动红红火火去参数,类似于读取远程页面或者文件内容等。所以放置SQL注入的方法就是要守住这两条路。Magic_quotes_gpc负责对GET、POST、COOKIE的值进行过滤,magiic_quotes_runtime对从数据库或者文件中获取的数据进行过滤 开启这两个选项之后能防住部分SQL注入 在int型注入上是没有多大作用的。

2.过滤类函数和类

       (1)addslashes函数

       Addslashhes函数过滤的值范围和GPC时一样的,即单引号(‘)、双引号(“)、反斜杠()及空字符NULL,它只是一个简单的检查参数的函数,大多数程序使用它实在程序的入口。

 技术图片

 

 

       (2)mysql_[real_]escape_string函数

       Mysql_escape_string和mysql_real_e3.scape_string函数都是对字符串进行过滤,在PHP4.0.3以上版本才有。

 技术图片

 

 

       (3)intval等字符转换

       以上里昂中过滤方式,在int类型注入时效果并不好,比如可以通过报错或者盲注方式绕过,这时候intval等函数就起作用了,intval的作用是将变量转换成int类型,这里距离intval是要表达的一种方式,一种利用参数类型白名单的方式来防止漏洞,对应的还有好很多如floatval等

 技术图片

 

 

2.   PDO prepare预编译

待更新…….

 

PHP代码审计入门(SQL注入漏洞挖掘基础)

标签:知识   state   agent   直接   数据库操作   工具   let   防范   code   

热心网友 时间:2022-04-11 00:27

挖漏洞也分方向。

有web,操作系统(pc端,手机端),还有逆向破解反病毒等等方向。
搞web,你可以自己去搭建一个网站,在此过程中,计算机网络,html,css,javascript,php数据库,等等,php代码审计啊,SQL注入啊,xss啊,还要适当接触linux,这一路学习过来,再看案例,再研究,再学习。
操作系统
这个太NB了,根基就是C和汇编,内核也要玩的溜啊,搞安卓应该还有linux吧,这个很耗心血呀。
逆向反病毒
还是C和汇编,这两个要玩的溜,还有windows的API,PE结构,哦,还要学习操作系统等等课程(密码学)还有主流的几款工具,IDA,ollydbg,等等反汇编工具。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
WIN7不会自动安装AHCI驱动是怎么回事?每次重装系统后都得我自己安装_百... 钉钉录播课能否查看观看时长 为什么城市轨道要有身高条件 城轨交通运营管理专业现身高吗 城市轨道交通运营管理这个专业是否有身高要求 读城轨专业需要什么条件 学习城轨专业需要什么条件? 城市轨道专业最低的身高要求多少?身高158毕业出来好找工作吗? 城轨专业要求身材吗 城轨专业有身高限制吗 给母校、老师、同学的临别赠言 茴香猪肉饺子馅的做法窍门 淘宝确认收货短信验证码要钱吗 发短信获取微信验证码要钱吗 通行行程卡短信验证收费吗? 无人深空哪种星球刷风暴水晶 无人深空吉克小吸怎么获得 无人深空怎么赚钱-快速赚钱方法 无人深空怎么跑商 跑商赚钱推荐攻略 无人深空阿斯特拉之道寻找答案。这里卡住了,这个星系除了红色标识啥都没有 无人深空跑商刷钱方法 无人深空如何跑商刷钱 无人深空定居点生产什么好 无人深空哪个星球钱最多? 钱最多的星球位置图一栏 无人深空星球等级是什么意思 星球等级含义介绍 求修真后宫爽文,美女全收,不圣母不争霸不血腥,300万字以上? 貂蝉在三国十大美女的排行榜上能排第几位? 跪求大量后宫文 “蛇蝎美人”郑袖喜欢屈原吗,两情相悦的传闻莫非是真的? 求都市言情小说,男主角背景很强大,却是公司的小职员(类似我的老婆是警花的,最好跟国家搞上关系,有后宫) 求打野赵信符文出装 写告别母校,要对同学和老师说的话。 写给母校,老师,同学各一条离别赠言 毕业联欢会上,你将如何表达自己的依依惜别之情?请你分别给学校、老师、同学写一则毕业赠言 有没有泰国片的电视剧或电影{像初恋这件小事、命定之爱} 好看的爱情片 有没有像泰剧《命定之爱》那样讲述王子公主爱情故事的电视剧? 急求最感人,最虐的泰国电视剧? 泰国翻拍过中国的电视剧有哪些? DELL笔记本开机屏幕不亮 梦见观音菩萨被水冲走 梦见家里菩萨掉水里冲走了? 英朗19款自己换机油需要什么工具 那位大神知道,HIWIFI路由器初始密码?急用!谢谢! AutoCAD 我的CAD怎么只能选择一个对象了? 我买新的DELL笔记本开机屏幕不亮无法使用, AutoCAD我的CAD怎么只能选择一个对象了? 解梦梦见发大水把庙里的菩萨也冲走了 cad选择对象怎么只能选择一个 在CAD里为什么只能选中一个对象,而不能累加选择多个对象 梦见洪水淹菩萨 梦见观音菩萨雕塑像被搬到清澈的河边