黑客三兄弟(续)

【DaVinci Developer实战指南】从入门到精通:软件组件设计与配置全解析 本文详细解析了DaVinci Developer在汽车电子开发中的核心应用,从软件组件设计到配置实战,涵盖Application SWC创建、RunnableEntity设计及Exclusive Area配置等关键环节。通过实际案例分享,帮助开发者快速掌握AUTOSAR架构下的ECU软件开发技巧,提升工作效率与系统稳定性。 阅读详情

还不认识黑客三兄弟的可以移步上一篇文章《黑客三兄弟》,三分钟就可以混个脸熟。

上次说到三兄弟用XSS和CSRF这两个工具获利颇丰,后来人们在编程中很注意防范,这两个漏洞越来越少了,逼得三兄弟不得不开辟新财路。

1

另辟蹊径

老二给大家提了一个建议:“要不我们试一试SQL注入?”

老大说:“老掉牙的东西了,1998年都有了,估计漏洞也没几个了吧?”

“那不一定啊,反正我们要节源开流,我最近找了一个网站,可以让老三来练练手。”

老三一听又可以学到新东西了,非常兴奋:“二哥,你先给我说说什么是SQL注入。”

“原理非常简单,比如网站有个users表格,数据如下:”

0?wx_fmt=gif0?wx_fmt=png

“这个网站有个功能,根据id来查看用户信息,http://xxxx.com/user?id=xxxx, 对应的SQL可能是这样的:”

string sql ="SELECT id , name, age from users WHERE id="+<id>;

如果用户在浏览器的URL 是 http://xxxx.com/user?id=1,那真正执行的SQL就是这样:SELECT id , name, age from users WHERE id=1

0?wx_fmt=png

就会把张大胖对应的那条记录给取出来了。

0?wx_fmt=gif

老三说:“这没什么啊,程序不都是这么写的吗?”

老二说:“作为黑客,如果遇到了这种情况,那可是个好机会啊,你想想,如果我输入了 http://xxxx.com/user?id=1 or 1=1 会发生什么状况?”

老三把id的值代入到sql中,有趣的事情发生了,sql变成了这样:

SELECT id , name, age from users WHERE id=1 or 1=1

“哇塞,这是哪个天才想出来的注意啊,or 1=1 会让where字句的值一直是true, 那岂不把所有的user数据都给提取出来了!” 老三惊叹。

2

牛刀小试

老二笑道:“三弟,原理很简单吧,但是想用好可不容易,你再试试这个网站:www.badblog.com/viewblog?id=U123,这个URL能显示ID为U123的博客摘要。

老三迫不及待地把url 改为 www.badblog.com/viewblog?id=U123 or 1=1 , 心想最终的sql 就是: SELECT xxx FROM xxx WHERE id =U123 or 1=1 ,他兴奋地等待所有的博客摘要显示出来。

可是,浏览器只是提示:“无效的博客ID”

这是怎么回事? 轮到我怎么不行了呢?老三挠了挠头。

老二解释道:其实吧,你没有注意到,那个id不是一个数字,是一个字符串("U123"),背后的SQL可能是这样的:

string sql = "SELECT xxx FROM xxx WHERE id='" + <id> +"'";

字符串的话需要用单引号括起来,所以URL应该这么写:www.badblog.com/viewblog?id=U123' or '1'='1

这样才能生成有效的SQL:SELECT xxx FROM xxx WHERE id ='U123' or '1'='1'

“奥,原来是这样,看来拼接字符串也真的不容易啊!” 老三赶紧继续试验。

可是浏览器还是没有把所有博客都显示出来,还是只显示了一条, 但不是U123对应的那条博客。

老三想了想说:“二哥,是不是SQL执行成功了,但是内部的程序永远只返回SQL结果集的第一行啊。”

“应该是这样。”

“那这所谓的SQL注入也没啥用处啊。 ”

在一旁忙活XSS的老大笑了: 咱们做黑客的,得有无比的耐心,还得充分发挥想象力才行啊。

3

疯狂注入SQL

老二说:“大哥说得非常对, 我们换一个URL www.badblog.com/news?id=3,我实验过,这个URL也有SQL注入漏洞,并且如果我输入id=3 or 1=1 , 就会把数据库中所有的新闻给显示出来。”

0?wx_fmt=png

“现在我们利用这个漏洞: 努力把这个网站的用户名和密码给挖出来。”

老三瞪大了眼睛,似乎有点不相信:“不登录它的服务器,仅仅通过浏览器就可以吗?”

“是可以滴,但也要看看我们运气如何,我们假设这个网站是个Mysql数据库,接下来你得懂一点Mysql 数据库知识了。我们分三步走,首先获取这个数据库的库名,然后获取所有的表名,最后找到用户表,从中select 数据。”

“我似乎有点明白了,就是不断地往那个URL注入SQL语句,对吧?”

“对的,第一步,我们已经能猜出那个URL对应的SQL是:SELECT xxx FROM xxx WHERE xx=<id>,并且我们知道,这个SELECT出的数据中至少有两列(标题和内容),现在我们注入数据,形成一个这样的sql 出来:

SELECT xxx FROM xxx WHERE xx=3 union select 1,2,3,4,5,6,7,8 , 你猜猜为什么要这么做?”

“这难不倒我,union 要求两个结果集的列必须个数相同,现在你在union的第二部分输入了8个column ,就是猜测union的第一个字句也有8 个column, 对不对?”

老二说:“没错,孺子可教,如果这个SQL执行不正常(界面会有错误), 我们就再尝试,增加或减少列,直到成功为止。”

老三试了几次,等到列数为3的时候,SELECT xxx FROM xxx WHERE xx=3 union select 1,2,3

浏览器页面突然显示了出了两条新闻, 一条有正常的标题和内容, 另外一条的标题是2, 内容是3, 正是老三构造出来的。

0?wx_fmt=png

0?wx_fmt=gif

老三说:“理解了, 关键点是第二列和第三列的值会被显示到浏览器的界面中,接下来我们可以这么做:SELECT xxx FROM xxx WHERE xx=3 union select 1,2,database() ”

于是就获得了数据库的名称: epdb

0?wx_fmt=png0?wx_fmt=gif

老二心想,三弟悟性确实不错啊,数据库也扎实。他说:“那我问你,你怎么才能获得这个数据库的所有表的名称?”

“这难不倒我,mysql 中 information_schema.tables 这个表保存着所有的表名,现在知道了数据库的名称,只需要把数据库名称传递过去就行了”

SELECT xxx FROM xxx WHERE xx=3 union select 1,2,table_name from information_schema.tables where table_schema='epdb'

果然,epdb这个数据库所有的表都取出来了:

0?wx_fmt=gif

0?wx_fmt=png

老三指着ep_users 大叫,“二哥,用户表肯定就是这个了!”

老大扭过头来:“小点声,老子正处于XSS的紧要关头。”

老二说:“接下来你知道怎么办了吧?”

老三点点头,又构造出一个sql ,把ep_users的列名全取出来:

SELECT xxx FROM xxx WHERE xx=3 union select 1,2,column_name from information_schema.columns where table_name='ep_users'

0?wx_fmt=gif

0?wx_fmt=png

看来这个ep_users有这么几个column : id ,name, pwd。

再接再厉,把ep_users表的数据给选出来:

SELECT xxx FROM xxx WHERE xx=3 union select 1,name,pwd from ep_users

0?wx_fmt=png

0?wx_fmt=gif

4

破解密码

“二哥,二哥,看到用户名和密码了,著名的张大胖(zhangdapang)的密码也暴露了!” 老三忍不住再次欢呼, 老大回过头来就是一巴掌。

“可是,这密码不是明文的啊!看看这乱七八糟的字符。” 老三挨了一巴掌后清醒了一点。

“当然了,现在的数据库基本上都不会存明文的密码了,2012年优快云的数据库被黑客曝光,大家震惊地发现,密码都是明文存储的,由于很多人在多个网站都用同样的密码,明文密码的暴露一下子让很多网站都面临攻击的威胁。”

“那这些密码是加密的吗? ”

“是通过Hash的算法计算出来的。”

0?wx_fmt=gif0?wx_fmt=png

“这个Hash值会保存到数据库当中,等到你下次登录,输入用户名和密码的时候,就会再次对密码进行同样的hash计算,然后和数据库的值比较,看看是不是相同。” 老二补充道。

“这个hash 我知道,是不可逆的运算,所以即使被偷取了,也无法得到明文密码。二哥,我们折腾了半天,难道白忙活了吗?”

“不不,有几种办法可以去破解密码,一种就是猜测,比如我准备了很多人们最常用的密码,然后把这些密码也做hash操作,和数据库密码对比,如果匹配,我就知道明文密码了。

还有一种就是查表,我事先把明文密码和计算好的hash值形成一个对照表,然后用数据库中密码的hash值去对照表中查找,如果找到了,明文密码也就有了。当然为了提高效率,人们还制作了所谓彩虹表。”

0?wx_fmt=png0?wx_fmt=gif

(一个明文密码和Hash值的对照表)

“二哥你赶快查一下啊, 我真是想知道著名的张大胖(zhangdapang)的密码是多少!”

老二在电脑前面敲了半天,沮丧地说:“看来不好查,这个密码应该是加盐(salt)了。”

“加盐?”

“对,他们给每个密码都加了一了随机数,然后再做Hash操作。 这样一来,通过查找的方式就难于破解了!”

0?wx_fmt=png

0?wx_fmt=gif

没想到老三神秘地一笑:“二哥,没那么麻烦,我现在已经用管理员账号(admin)登录后台了!”

“啊?!你怎么做到的?”老三极度震惊。

“很简单,刚才我试了下登录的功能,发现也有SQL注入漏洞,那个SQL可能是这样子的:

select xx from ep_users where user='<username>' and pwd='<password>'

然后代码会判断这个sql 返回的结果集数目是否为0, 如果不为0就认为登录成功。

那我通过注入把它改写成:

select xxx from ep_users where user='admin' and password='password' OR '1'='1'

然后我就立刻就登录了,由于用户名是admin,现在我已经有了管理员权限了!可以为所欲为了。”

老三有点尴尬:我忙活了半天,还不如这小子找的一个漏洞。

5

后记

本文描述了SQL注入的原理,实际上SQL注入漏洞的危害非常巨大,因为黑客可以利用漏洞去执行数据库中很多函数(mysql的LOAD_FILE, SELECT INTOFILE),存储过程(例如臭名卓著的xp_cmdshell), 可以向服务器植入代码。 如果有数据库账号适当权限,还可以创建表,删除表,非常可怕。

防御SQL注入的最佳方式,就是不要拼接字符串, 而要使用预编译语句,绑定变量,不管你输入了什么内容,预编译语句只会把它当成数据的一部分。

String sql = "select id from users where name=?";

PreparedStatement pstmt = conn.prepareSatement(sql);

pstmt.setStrig(1,request.getParameter("name");

pstmt.executeQuery();

推荐阅读:

浏览器的安全反击战

黑客三兄弟

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017文章精华》


码农翻身

用故事讲述技术

0.jpeg

用python画年度和月度的日历图 用python画各种日历图,可以区分月份来画也可以画一整年的,日历图中可以体现自己的信息 阅读详情

相关推荐

DOSBOX 0.74模拟器安装Windows 95

DosBox本身带有5.0版的DOS系统,启动后虚拟一个Z盘存放有Dosbox特有的外部指令,如config.com、imgmount.com等,经测试,可以顺利安装各版本的windows 3.1系统,但是不能安装win95,需要用原版的dos镜像启动才能安装。1. 获取启动盘镜像文件 下载Win95启动软盘镜像文件,名为boot.img,放到DosBox 0.74的目录下。2. 制作硬盘镜像文件

xjnzhidao的博客 9310

黑客三兄弟

建立Beauty.com的黑客三兄弟最近可谓是春风得意,他们的这个网站精准地利用了人类的本性,窃取了不少登录用户的cookie。(码农翻身注:参见前文《浏览器的安全反击战...

码农翻身 664

电动车辆的动力总成控制

手把手教你学Simulink——电动车辆的动力总成控制在汽车工程领域,电动汽车(EV)的动力总成控制系统是确保车辆性能、效率和驾驶体验的关键。动力总成控制系统通常包括电机控制、电池管理系统(BMS)、能量回收系统等组件。通过使用Simulink,我们可以模拟和测试这些系统的运行情况,优化设计,并验证控制算法的有效性。

amy_mhd的博客 968

一个程序员的黑客梦

张大胖上大学的时候就对网络安全非常感兴趣, 经常上网去搜索那些传奇的黑客故事,然后心里痒痒的想小试牛刀。那个时候大家的安全意识非常薄弱,张大胖学会了SQL注入以后,居然...

码农翻身 2万+

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8839

prokka-原核及病毒基因组高效便捷注释

文章目录简介安装使用参考 简介 Prokka: rapid prokaryotic genome annotation 全基因组注释是在一组基因组DNA序列中识别感兴趣的特征,并用有用的信息标记它们的过程。Prokka是一款软件工具,可以快速注释细菌、古生菌和病毒基因组,并生成符合标准的输出文件。 安装 conda install -c conda-forge -c bioconda -c defaults prokka Test Type prokka and it should output its

Neptuneyut的博客 3312

黑客赚钱渠道,别说兄弟们发财不带你了

每天靠兼职赚钱,去漏洞盒子网或者补天网等网站扫描漏洞提交赚取赏金,有时候也参加一些奖金高的比赛,实力强的月入上万也不是问题。

小司机的奥拓 3306

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 666

扁鹊三兄弟的启示,保证系统稳定的秘诀

总之,提升系统稳定性,我们要借鉴扁鹊三兄弟的智慧,像扁鹊大哥一样在事前减少故障数量,像扁鹊二哥一样在问题还小时快速发现,像扁鹊一样在出现问题时迅速恢复。多管齐下,从预防、发现到恢复,全方位保障系统的稳定健康运行。

fhey的博客 1715

基于ESP32的无线DMX节点设计:从Art-Net/sACN到DMX512的协议转换与实现

在舞台灯光和建筑照明控制系统中,DMX512是行业标准的数字调光协议,用于控制灯具的亮度、颜色和效果。其原理是通过RS-485差分信号串行传输512个通道的数据,每个通道对应一个控制值。然而,传统有线DMX布线复杂、成本高,在移动装置、历史建筑或临时活动中部署困难。为解决此问题,业界发展出了基于以太网的灯光控制协议,如Art-Net和sACN(E1.31),它们将DMX数据封装在UDP包中,通过网络传输。这项技术的核心价值在于实现了灯光控制的网络化与无线化,大幅提升了系统的灵活性和部署效率。其典型应用场景包

weixin_30175731的博客 228

【Zephyr存储专题】09_LittleFs文件系统操作

本文档旨在为开发者介绍Zephyr下Littlef's文件系统相关配置使用指南

zero的博客 3246

黑客攻击_我如何开始黑客攻击

黑客攻击 一切始于视频游戏。 我的第一个是Nintendo Entertainment System的《超级马里奥兄弟3》,它仍然是我有史以来最喜欢的游戏之一(我的表弟教我了所有三个经哨位置)。 我被这些小世界迷住了,这些小世界塞进了微芯片,装在塑料盒中,坐在我房间的一个纸板箱中。 在过时的彩色电视上,我将探索这些世界。 我的父母将我从NES升级到了便宜的二手PlayStation,这一...

编程故事的地方 335

【数据集5】土地利用类型数量预测数据LUH2

简介土地利用类型数量预测数据LUH2

WW、forever的博客 4547

白帽子黑客挣钱攻略,别说兄弟发财不带你!

对于白帽子黑客,很多人的理解应该只停留在概念表层,今天成哥在这里整理了一些具体到工作和挣钱路径的内容,供大家参考哦。1.挖掘漏洞挣奖金通用程序漏洞,顾名思义就是被大众大量、普遍使用的应用程序,这类程序的漏洞通常危害性巨大,可能可以影响数以万计的使用者。国内、外各大平台对于此类漏洞都有奖励机制,如果你挖掘到通用程序的漏洞并提交到这些平台上后,将会被给予一定的现金奖励。

shandongjiushen的博客 1123

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

那不是兄弟我干的——评清华声讨黑客

前几天我在凯迪的“猫眼看人”看到一篇好文章,先说那标题就解气——《清华校长:停止往大学生脑子里灌屎 》。我当时也是一愣,第一反应是:难道清华校长换人了?后来一看内文还真是顾秉林,话说05年他在宋楚瑜访问清华大学时出丑,那形象可是跌至了谷底,今日看到他入情入理、又颇有知识分子冲冠一怒风骨的好文,不由感叹士别三年当刮目相看:原来此人水平不低。 网友虽有疑惑的,但对文章本身的看法与我类似,皆竖指称...

qaybpljplj的专栏 219

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

2024年最新学黑客能一夜暴富吗?

黑帽大多数做黑产,如 ddos 网站,拿数据等,但是大多数黑帽黑客水平不够,占比 80%左右,这部分人没有稳定收入,远远低于一万,甚至大多数是 0 收入,他们大多是业余爱好者,没有研究透。简单的说,黑帽可以有很高的收入,但是风险极高,在法律边缘游走,而低收入占多数,正态教程没有白帽那样集中。黑客分为白帽黑客和黑帽黑客,处于黑白两道的黑客会的技术都有些相似,但是却是对立的,白帽做网络安全,修补漏洞。就连小风教程网都没几个人是女的,如果你是女的在文章下面点草泥马的图标,统计下多少人。【完整版领取方式在文末!

2401_84302722的博客 1056

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Java帝国之风云再起
下一篇: 当多线程并发遇到Actor
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值