imtoken冷钱包下载官网|afl
AFL - News, Videos, Fixtures, Scores & Results - AFL.com.au
AFL - News, Videos, Fixtures, Scores & Results - AFL.com.au
Skip to main content
AFL
AFLW
AFL Play
Club Sites
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
Created by Telstra
More from Telstra
Australia's best network.
AFL Tipping
AFL Fantasy
Telstra
Telstra TV
Telstra TV Box Office
Foxtel From Telstra
AFL Logo
Latest
News
Videos
Podcasts
Gallery
Matches
Fixture
Ladder
Teams
Broadcast Guide
Match Videos
Stats
AFL Stats
Team Rankings
Premiership Winners
Brownlow Medal
Leaders & Awards
AFL On Demand
Tickets
Buy Tickets
On-Sale Dates
FAQ
Venues
Membership
Fantasy
Play AFL Fantasy
Fantasy Hub
Fantasy Draft
Tipping
Shop
AFL Logo
Menu
Video
Match Centre
Ladder
Stats
Latest
News
Videos
Podcasts
Gallery
Matches
Fixture
Ladder
Teams
Broadcast Guide
Match Videos
Stats
AFL Stats
Team Rankings
Premiership Winners
Brownlow Medal
Leaders & Awards
AFL On Demand
Tickets
Buy Tickets
On-Sale Dates
FAQ
Venues
Membership
Fantasy
Play AFL Fantasy
Fantasy Hub
Fantasy Draft
Tipping
Shop
VFL/VFLW
SANFL
WAFL
AFLW
PLAY AFL
About AFL
VFL/VFLW hub
SANFL hub
WAFL hub
Trade
Draft
Toyota AFL Club Help
Competitions & Promotions
Concussion
Mental Health & Wellbeing
Diversity & Inclusion
AFL Mint
Marvel Stadium
AFL Policies
Annual Reports
Careers
Contact Us
Clubs
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
VFL/VFLW
SANFL
WAFL
AFLW
PLAY AFL
About AFL
VFL/VFLW hub
SANFL hub
WAFL hub
Trade
Draft
Toyota AFL Club Help
Competitions & Promotions
Concussion
Mental Health & Wellbeing
Diversity & Inclusion
AFL Mint
Marvel Stadium
AFL Policies
Annual Reports
Careers
Contact Us
Clubs
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
Follow us on social media
Youtube
TikTok
00:54
Half-time disaster with gun Lion helped off the field
Brisbane suffers a huge blow with rebounding defender Keidean Coleman going down with a suspected leg injury
AFL
Follow it LIVE: Final teams, subs locked in for Lions-Blues
Follow the live coverage from the Opening Round clash between the Lions and Blues
AFL
Clarkson cops big fine for 'unacceptable' Saints outburst
North Melbourne coach Alastair Clarkson has been punished by the AFL for his 'highly inappropriate' comments to St Kilda players
AFL
09:02
Footy Feed: Terrific Tiger tale, Pie who's stiff, Blue's back
Sarah Olle and Josh Gabelich unpack the Opening Round teams
AFL
More News
All News
AFL
Video
Footy Feed: Terrific Tiger tale, Pie who's stiff, Blue's back
Opinion
AFL
opinion
IF the Cats get on a roll in 2024 ... THEN
AFL
Star Dog to push R1 case in VFL, ex-Saint in line for AFL comeback
AFLW
'That's what I thrive on': Why Hyett answered the coaching call
AFL
Hot streak: Lion's insane record stretches to 26 games
AFL
Prelim heartbreak lingers, but Giants have eyes on the Pies
AFL
Suns brace for growing pains under new coach Hardwick
AFL
podcasts
LISTEN: Same old Dees, Nat reflects on International Women's Day
AFL
Rowell on new look, role and why Opening Round is critical
AFLW
Video
The new norm: Hyett sees bright future for female coaches
AFL
match report
Grundy gets last laugh as Swans roll Dees at packed SCG
AFL
TEAMS: Blues gun returns, Lions mid out, young Pie missing
AFL
The off-season change that has Cats defender approaching his 'peak'
AFL
'His second half was huge': Gun recruit stars against old mates
AFL
'I put a mask on': Tim Membrey on his mental health battle
AFL
Bombers trio to play VFL ahead of season opener
AFL
'I lost trust in my body': Eagles star puts injury-riddled years behind him
Opinion
AFL
Opening Round preview: Old rivalries reignite, teams out for revenge
AFL
Errol Gulden on Johnny Drama, Brownlow nerves and THAT song
Opinion
AFL
Expert predictions: Damo's surprise Cats call, Cal's bold Port tip
Quick Links
AFL
AFLW
VFL
VFLW
SANFL
WAFL
PLAY AFL
Previous
Next
Team Lineups
New Today
AFL Tipping
Now open for 2024
Latest injury news
New Today
Opening Round 2024
Gather Round
New Today
See every matchup for the upcoming season
All your latest draft news
New Today
Each weekday from 7.30am AEDT
AFL Play
Get the AFL Newsletter
New Today
Turn it on
Videos
Featured
Latest
AFL
AFLW
Footy Feed
Fantasy
Learn More
Footy Feed: Terrific Tiger tale, Pie who's stiff, Blue's back
Sarah Olle and Josh Gabelich unpack the Opening Round teams
AFL
09:02
Footy Feed: Terrific Tiger tale, Pie who's stiff, Blue's back
Sarah Olle and Josh Gabelich unpack the Opening Round teams
AFL
06:20
Highlights: Sydney v Melbourne
The Swans and Demons clash in Opening Round
AFL
01:50
Grundy gets the points against former allies
Brodie Grundy shines in his first outing for Sydney, winning the battle against ex-teammate Max Gawn in an enthralling contest
AFL
03:06
The new norm: Hyett sees bright future for female coaches
Female footy coaches are the new norm, says new Bulldogs coach Tamara Hyett, and she has a fellow AFLW coach to thank for opening the door
AFLW
05:52
Footy Feed: Tigers star out, Membrey opens up, Pie to debut
Nat Edwards and Josh Gabelich with the latest footy news
AFL
18:54
44 Sons: The inside story of Fly's 'Flagpies'
Craig McRae, Darcy Moore and Collingwood's leading players look back at the Magpies' path to 2023 premiership glory
AFL
11:26
Cal and Sarah’s pre-season tips: Flag, Brownlow, breakout star, more
Sarah Olle and Cal Twomey deliver 15 pre-season predictions on the eve of the 2024 Toyota AFL Premiership Season
AFL
Editor's Pick
Opinion
Opinion
Opening Round preview: Old rivalries reignite, teams out for revenge
A historic Opening Round in Sydney, Brisbane and the Gold Coast will kick off the AFL season
AFL
Opinion
Opinion
Expert predictions: Damo's surprise Cats call, Cal's bold Port tip
Premiership, Brownlow, recruit of the year. We make the call
AFL
10:14
How the AFL fixture is built: 18 teams, two countries, millions of options
Go inside the complex process of creating the annual AFL premiership season fixture
AFL
More News
Previous
Next
Suns brace for growing pains under new coach Hardwick
After previously playing under Damien Hardwick at Richmond, Gold Coast winger Brandon Ellis admits the Suns will take time to get used to the gameplan
AFL
Fantasy
Fantasy
AFL Fantasy starts in round one, other changes for 2024
The introduction of Opening Round means AFL Fantasy will be a little different in 2024
AFL
fantasy
Prelim heartbreak lingers, but Giants have eyes on the Pies
Greater Western Sydney will lean into the emotions of its preliminary final rematch against Collingwood, coach Adam Kinglsey says
AFL
LISTEN: Same old Dees, Nat reflects on International Women's Day
Join Nat Edwards and Damian Barrett for AFL Daily, as Nat reflects on her experiences in footy on International Women's Day
AFL
podcasts
Star Dog to push R1 case in VFL, ex-Saint in line for AFL comeback
Jack Macrae will play a VFL practice match this weekend in a bid for selection in the R1 team
AFL
The off-season change that has Cats defender approaching his 'peak'
A flawless pre-season has Sam De Koning heading into 2024 full of confidence
AFL
'That's what I thrive on': Why Hyett answered the coaching call
Sarah Black chats with new Western Bulldogs coach Tamara Hyett
AFLW
Rowell on new look, role and why Opening Round is critical
Entering his fifth AFL season, Suns midfielder Matt Rowell has already had a wide array of experiences
AFL
Hot streak: Lion's insane record stretches to 26 games
One Brisbane player hasn't been part of a losing side at the Gabba since round one of 2021
AFL
'His second half was huge': Gun recruit stars against old mates
Brodie Grundy has earned praise from both John Longmire and Simon Goodwin after leading Sydney to victory
AFL
Fantasy News
Previous
Next
Fantasy
Fantasy
AFL Fantasy starts in round one, other changes for 2024
The introduction of Opening Round means AFL Fantasy will be a little different in 2024
AFL
fantasy
Fantasy
Fantasy
LISTEN: Fantasy eyes on Williams, Coleman, Swans-Dees takeaways
The Traders preview Opening Round ahead of the 2024 AFL Fantasy launch next week
AFL
fantasy
Fantasy
Fantasy
Fantasy Freako's rookie notes: 14 cash cows to keep tabs on
Get intel on the best draftees to consider for your Fantasy team
AFL
fantasy
Fantasy
Fantasy
Ultimate Fantasy cheat sheet: Points, CBAs, kick-ins, more
All the Fantasy points, CBAs, kick-ins, time on ground from the AAMI Community Series
AFL
fantasy
Fantasy
Fantasy
Pre-season Fantasy wrap: Locks, bargains, surprise packets, more
Calvin from The Traders assesses the full round of practice games
AFL
fantasy
Fantasy
Fantasy
Fantasy Draft primer: Must-read tips, sleepers, strategy
Are you ready to dominate your Fantasy Draft? Warnie offers his advice
AFL
fantasy
Fantasy
Fantasy
LISTEN: AFL Fantasy wrap of AAMI Community Series
Roy, Calvin and Warnie chat through the last of the practice games
AFL
fantasy
Fantasy
Fantasy
Value, 'cheat code', captains: Tips from reigning Fantasy champion
Newcomer or seasoned player, you can't miss the best advice from last year's Fantasy Classic champion
AFL
fantasy
Fantasy
Fantasy
LISTEN: Relive The Traders' Fantasy-focused call of Hawks-Bulldogs
Roy, Calvin and Warnie brought you coverage of the clash between the Hawks and Bulldogs
AFL
fantasy
Fantasy
Fantasy
The best loser's punishments for your Fantasy league
Introducing a punishment for your Fantasy league's loser is a must
AFL
fantasy
AFLW News
'That's what I thrive on': Why Hyett answered the coaching call
Sarah Black chats with new Western Bulldogs coach Tamara Hyett
AFLW
Mother of an effort: Teammates rally in support of young Hawk's plight
Sophie Locke's Hawthorn teammates answered her call to join her team for a fun run to raise money for Breast Cancer Network Australia
AFLW
Port appoints experienced footy manager as head of AFLW
Shane Grimm takes the reins of head of women's football from Juliet Haslam, who stepped down at he end of last year
AFLW
2024 AFLW Supplementary Selection Period and Rookie Signing Period summary
The AFLW's 2024 Supplementary Selection Period (SSP) and Rookie Signing Period has concluded, with four players added to an AFLW club's list
AFLW
AFL HQ
Damian Barrett
All the latest from Damo. His stories, his videos, his podcasts, and his opinions, all in one place.
Click here for everything Damo
Featured Podcast
AFL Daily
For all your latest footy news and views, listen to AFL Daily every morning, Monday to Friday
View All Episodes
For all your latest footy news and views, listen to AFL Daily every morning, Monday to Friday
View All Episodes
Match Videos
Previous
Next
00:51
Neale and Hewett exchange blows in fiery clash
Tensions spiral as Lachie Neale and George Hewett collide in this heated third-quarter incident
AFL
00:42
Air Daniher pulls down screamer in MOTY contender
Joe Daniher gets lift-off and reels in a huge grab before kicking a much-needed goal for Brisbane
AFL
00:52
Burst of Curnow brilliance brings Carlton right back
Three goals in a matter of minutes from Charlie Curnow sees Carlton close in on Brisbane's lead
AFL
00:38
Tough luck for brave Blue with injured Docherty subbed
Sam Docherty is ruled out of the match following this incident in the first quarter
AFL
00:54
Half-time disaster with gun Lion helped off the field
Brisbane suffers a huge blow with rebounding defender Keidean Coleman going down with a suspected leg injury
AFL
00:45
Speedy Cuningham provides some hope
David Cuningham kicks a much-needed goal on the run to keep Carlton in the contest
AFL
00:50
Zorko’s quick double spells trouble for Blues
A clever soccer goal followed by a perfect set shot from Dayne Zorko has the Lions looking ominous
AFL
00:45
McCluggage makes it look easy with boundary brilliance
Hugh McCluggage slots the set shot from the tightest of angles to open the scoring
AFL
14:18
Mini-Match: Sydney v Melbourne
Extended highlights of the Swans and Demons clash in Opening Round
AFL
08:48
Full post-match, OR: Swans
Watch Sydney’s press conference after Opening Round’s match against Melbourne
AFL
06:02
Full post-match, OR: Demons
Watch Melbourne’s press conference after Opening Round’s match against Sydney
AFL
01:50
Grundy gets the points against former allies
Brodie Grundy shines in his first outing for Sydney, winning the battle against ex-teammate Max Gawn in an enthralling contest
AFL
06:20
Highlights: Sydney v Melbourne
The Swans and Demons clash in Opening Round
AFL
00:42
Van Rooyen’s accidental goal is simply extraordinary
Jacob van Rooyen earns one wild major after a marking attempt fortuitously finds his lower knee before drifting through
AFL
00:36
Warner lights up SCG after hitting one sweet for six
Chad Warner lifts his side with a stunning effort from outside 50
AFL
00:43
Bowey blow after sickening shoulder collision
Melbourne defender Jake Bowey leaves the ground hurt after a brutal clash with Justin McInerney
AFL
00:52
Fritsch catches fire with three in the term
Bayley Fritsch starts to heat up after half-time with a trio of goals in quick time
AFL
00:43
From zero to hero: McLean makes amends for horror miss
Hayden McLean squanders a gilt-edged opportunity right in front of goal before sparing his blushes moments later with a major
AFL
00:47
Papley picks the drop of the footy to perfection
Tom Papley scores an electric goal after guiding through a beautiful effort at full pace
AFL
00:34
Viney refuses to go down in super show of strength
Jack Viney is pumped up after managing to sneak through this powerful goal
AFL
AFL Noticeboard
Previous
Next
MATCH REVIEW: Swan charged with rough conduct on top Dee
The match review for Thursday night's Opening Round game has been completed
AFL
AFL HQ
AFL Statement - Alastair Clarkson
North Melbourne Senior Coach Alastair Clarkson has been found guilty of breaching AFL Rule 2.3(a) (Conduct Unbecoming) in relation to an incident during the AAMI Community Series
AFL
AFL HQ
Workplay welcomes NAB's Beyond the Field Cadetship
A bespoke Women in Sport employment program, Beyond The Field, has been launched
AFLW
AFL HQ
AFL releases new rules for junior footy
The new rules will help clubs attract and retain players to boost participation
AFL
AFL HQ
2024 AFL Concussion Protocols: Community football to adopt minimum 21 day return to play protocols
The AFL today announced important developments in relation to the return to play protocols in the concussion guidelines
AFL HQ
Jesse Baird and Luke Davies tribute
A tribute to AFL Goal Umpire Jesse Baird and his partner Luke Davies will take place prior to tomorrow night's opening game of the season between Sydney and Melbourne at the SCG
AFL
AFL HQ
Gather Round
Gather Round
AFL launches new Pepsi Collective experience at Gather Round
The AFL is pleased to unveil its new game day experience - The Pepsi Collective –as part of 2024 Gather Round… A Festival of Footy
AFL
AFL HQ
AFL captains have their say on the 2024 Toyota AFL Premiership Season
On the eve of the season, the 18 club captains have had their say on how the season will play out its biggest moments
AFL HQ
Abbey Holmes joins AFL All-Australian selection panel
Abbey Holmes replaces former Geelong premiership captain Cameron Ling on the AFL All-Australian selection panel
AFL
AFL HQ
More From AFL
Toyota AFL Premiership Season Fixture
FULL FIXTURE: Download the complete 2024 Toyota AFL Premiership Season Fixture
NAB AFL Women's Competition
Read all of the latest news from the NAB AFL Women's competition
AFL Draft
WATCH the brightest prospects across the country, out to impress the AFL scouts ahead of this year's draft
Continental Tyres AFL Trade Period
Keep up-to-date with the latest trade news and rumours
Get Involved
Ways to Play
Australian rules football is the game for everyone. Check out how you can get involved.
Coach
Coaches are the backbone of local footy, leading and inspiring participants every week.
Umpire
Umpires are the eyes and ears of the footy field. Whether you’re in the field, boundary or goal, umpiring is a critical role.
Volunteer
Volunteers are the lifeblood of local footy clubs. Find out more about how you can get involved with a club near you.
AFL Live Official App
Follow every game of the 2024 Toyota AFL Premiership Season and Toyota AFL Finals Series, with access to all the live scores and stats.
Naming Rights Partner
Logo of partner Toyota
Major Partners
Logo of partner McDonalds
Logo of partner Telstra footer
Logo of partner Carlton Draught
Logo of partner Nab
View All Partners
Download the Official AFL App
Download on the app store
Google play
Youtube
TikTok
Page Top
AFL Logo
© 2024 AFL
Terms of Use
Privacy Policy
More AFL
About AFL
Mental Health & Wellbeing
Toyota AFL Club Help
Diversity & Inclusion
Contact Us
Get Involved
Play.AFL
Coach.AFL
Umpire.AFL
Schools.AFL
AFL Membership
Acknowledgement of Country
In the spirit of reconciliation the AFL acknowledges the Traditional Custodians of country throughout Australia and their connections to land, sea and community. We pay our respect to their Elders past and present and extend that respect to all Aboriginal and Torres Strait Islander peoples today.
Created by Telstra
Contact Us
Terms and Conditions
Privacy Policy
Copyright & Trademark
Online Security
Why not share?
Close
Share this Stream
Share on Facebook
Share on Twitter
Share on WhatsApp
Copy link
Copied to clipboard!
Share #AFL
Share this article
Loading Gallery
Close
Why not share?
Close
Share This Article
Share on Facebook
Share on Twitter
Share on WhatsApp
Copy link
Copied to clipboard!
Share
Share this article
Up Next
Autoplay
我的AFL入门之路 - 知乎
我的AFL入门之路 - 知乎首发于模糊测试切换模式写文章登录/注册我的AFL入门之路薛定谔的废物AFL-Fuzz介绍AFL(American Fuzzy Lop)是由Google安全工程师Michał Zalewski开发的一款开源fuzzing测试工具。其可以高效地对二进制程序进行fuzzing,挖掘可能存在的内存安全漏洞,如栈溢出、堆溢出、UAF、double free等。由于需要在相关代码处插桩,因此AFL主要用于对开源软件进行测试。配合QEMU等工具,也可对闭源二进制代码进行fuzzing,但执行效率会受到影响。工作原理:通过对源码进行重新编译时进行插桩(简称编译时插桩)的方式利用自动产生测试用例来探索二进制程序内部新的执行路径。AFL也支持直接对没有源码的二进制程序进行测试,但需要QEMU的支持。安装直接去官网下载压缩包,解压后在目录中打开终端输入: make
sudo make install注:解压命令如下: tar -zxvf afl-2.52b.tgz 输入以上命令后基本就能安装成功了,在终端输入afl-后tab,就能出现以下这些命令了: 这就表明安装成功了。使用AFL插桩程序这里以一个简单的C语言程序作为例子。 #include
#include
#include
#include
#include
int vuln(char *str)
{
int len = strlen(str);
if(str[0] == 'A' && len == 66)
{
raise(SIGSEGV);
//如果输入的字符串的首字符为A并且长度为66,则异常退出
}
else if(str[0] == 'F' && len == 6)
{
raise(SIGSEGV);
//如果输入的字符串的首字符为F并且长度为6,则异常退出
}
else
{
printf("it is good!\n");
}
return 0;
}
int main(int argc, char *argv[])
{
char buf[100]={0};
gets(buf);//存在栈溢出漏洞
printf(buf);//存在格式化字符串漏洞
vuln(buf);
return 0;
}总的流程概述:首先是用afl-gcc编译源代码,然后以文件(最好小于1K)为输入.然后启动afl-fuzz程序,将testcase(输入的测试文件)作为程序的输入执行程序,afl会在这个testcase的基础上进行自动变异输入,使得程序产生crash,产生了crash就会被记录起来。插桩编译实验环境中文件组织结构如下: 首先把上面的afl_test.c进行编译: afl-gcc -g -o ./afl_test/afl_test ./afl_test/afl_test.c结果如下: 编译成功后afl_test文件夹内容如下: 同样的,如果是编译一个c++的源码,那就需要用afl-g++。 接着建立两个文件夹:fuzz_in和fuzz_out,用来存放程序的输入和fuzz的输出结果。 在fuzz_in中还需要创建一个testcase文件,在这个程序的例子里,只需要随便输入一点东西就行了,那么testcase中就写aaa就可以了。 注意 在编译项目时,通常有Makefile,这是就需要在Makefile中添加内容: gcc/g++重新编译程序的方法是: CC=/path/to/afl/afl-gcc ./configure
make clean all对于一个C++程序,要设置: CXX=/path/to/afl/afl-g++.afl-clang和afl-clang++的使用方法类似。开始Fuzz对那些可以直接从stdin读取输入的目标程序来说,语法如下: $ ./afl-fuzz -i testcase_dir -o findings_dir /path/to/program […params…]对从文件读取输入的目标程序来说,要用“@@”,语法如下: $ ./afl-fuzz -i testcase_dir -o findings_dir /path/to/program @@输入命令:afl-fuzz -i fuzz_in -o fuzz_out ./afl_test/afl_test表示,从fuzz_in中读取输入,输出放入fuzz_out中,afl_test是我们要进行fuzz的程序,-f参数表示:testcase的内容会作为afl_test的stdin。 报错如下: 根据提示设置一波core_patternsudo su
echo core >/proc/sys/kernel/core_pattern再次执行:afl-fuzz -i fuzz_in -o fuzz_out ./afl_test/afl_testAFL界面进入Fuzz后,就会出现如下界面: 界面介绍process timing 展示当前fuzzer的运行时间、最近一次发现新执行路径的时间、最近一次崩溃的时间、最近一次超时的时间。 值得注意的是第2项,最近一次发现新路径的时间。如果由于目标二进制文件或者命令行参数出错,那么其执行路径应该是一直不变的,所以如果从fuzzing开始一直没有发现新的执行路径,那么就要考虑是否有二进制或者命令行参数错误的问题了。对于此状况,AFL也会智能地进行提醒。 overall results 这里包括运行的总周期数、总路径数、崩溃次数、超时次数。 其中,总周期数可以用来作为何时停止fuzzing的参考。随着不断地fuzzing,周期数会不断增大,其颜色也会由洋红色,逐步变为黄色、蓝色、绿色。一般来说,当其变为绿色时,代表可执行的内容已经很少了,继续fuzzing下去也不会有什么新的发现了。此时,我们便可以通过Ctrl-C,中止当前的fuzzing。 stage progress 这里包括正在测试的fuzzing策略、进度、目标的执行总次数、目标的执行速度。 执行速度可以直观地反映当前跑的快不快,如果速度过慢,比如低于500次每秒,那么测试时间会变得非常漫长。如果发生了这种情况,我们需要进一步优化我们的Fuzzing。 以上是简单的介绍,如果要看完整的可以查看官方文档。分析crash 通过上图可以知道,短暂运行后发现了6个crash。 这时候可以看看先前建立的fuzz_out目录中产生了啥东西: crashes文件夹里面是我们产生crash的样例,hangs里面是产生超时的样例,queue里面是每个不同执行路径的测试用例。 这时候来看看crash的6个样例: 第一个样例,通过命令 ··· zouyu@ubuntu:~/project/afl/fuzz_out$ cat crashes/id:000000,sig:06,src:000000,op:havoc,rep:128 | ../afl_test/afl_test ··· 复现结果如下: 参考的网站中通过xxd 命令查看crash文件即可判断crash的情况,暂时没有看懂为何。如: 第一个样例,发现符合栈溢出漏洞的crash情况 第二个样例,发现符合首字符为F且字符串长度为6的异常退出情况 ...... 至此,我们自己编写的简单程序的所有漏洞都被检测出来了,这个过程只用了5分钟,afl可以说是很强大的。无源码AFL测试上面是对简单的有源码的程序进行测试的,但是实际情况下不可能每次都有源码进行插桩编译测试,afl使用了qemu模式进行测试,只要在之前的命令的基础上加上-Q的参数即可 但是要先进行安装,在afl的根目录打开终端执行以下命令:cd qemu_mode
./build_qemu_support.sh
cd ..
make install安装过程中一系列报错,解决方案可参考AFL(二)afl-qemu无源码fuzz。 未能完全解决,在打补丁安装qemu时一致失败。 此后继续寻找新方法: 在运行./build_qumu_support.sh前,创建一个名为“memfd_create.diff”的文件,然后将下列代码粘进去:diff -ru qemu-2.10.0-clean/util/memfd.c qemu-2.10.0/util/memfd.c
--- qemu-2.10.0-clean/util/memfd.c 2018-11-20 18:11:00.170271506 +0100
+++ qemu-2.10.0/util/memfd.c 2018-11-20 18:11:13.398423613 +0100
@@ -37,7 +37,7 @@
#include
#include
-static int memfd_create(const char *name, unsigned int flags)
+int memfd_create(const char *name, unsigned int flags)
{
#ifdef __NR_memfd_create
return syscall(__NR_memfd_create, name, flags);之后将memfd_create.diff放在patches/目录下,然后修改build_qemu_support.sh,找到文件中的 patch -p1 <../patches/elfload.diff || exit 1
patch -p1 <../patches/cpu-exec.diff || exit 1
patch -p1 <../patches/syscall.diff || exit 1在之后加一行:patch -p1 <../patches/memfd_create.diff || exit 1然后再次运行build_qemu_support.sh即可继续下一步。 等最后安装完毕后,便可以进行无源码Fuzz了。简单无源码fuzz继续使用上面简单c代码进行测试,但这次采用gcc进行编译,而不是afl-gcc。将afl_test.c编译为afl_test2:gcc -g -o afl_test2 afl_test.c同时依然要在fuzz前创建input 和output文件夹。 执行命令:afl-fuzz -i ../workshop/input/ -o ../workshop/output/ -Q ../workshop/afl_test2结果如下: 可以看出:同样的程序,在qemu 模式下比在源码编译插桩的模式下会慢很多。(通过观察stage progress下的exec speed)一个fuzz实例这里用一个例子来fuzz一下,测试readelf。 由于readelf的输入其实就是elf文件,因此需要在in目录下放一个输入elf。 按照流程创建文件夹和测试用的elf。 初始文件布局如下: 首先进入workshop文件夹下之后开始执行命令:mkdir in out
cd in
cp ../../afl_program/testcases/others/elf/small_exec.elf . # afl目录中自带一些常用文件的testcase
cd ..
sudo cp /usr/bin/readelf . # 将readelf复制到当前目录来
afl-fuzz -i ../workshop/in -o ../workshop/out/ -Q ../workshop/readelf -a @@ # 开始fuzz,@@表示从in文件夹中找elf作为输入,实际上是在执行readelf -a 文件名。
注:最后一步是在afl程序所在的文件夹下运行,见下图:
最终运行结果如下: 本文主要流程参考:初探AFL-Fuzz qemu安装时报错解决方法 afl: Add support for emulated mode with QEMU附录:AFL变异策略确定性变异比特翻转(bitflip):按位翻转,1变为0,0变为1.这一阶段还会按照不同的长度和步长进行多种不同的翻转,每次翻转1/2/4/8/16/32 bit,依次进行。算术运算(arithmetic):整数加/减算术运算。跟bitflip类似,arithmetic根据目标大小的不同,也分为了多个子阶段,依次对8/16/32 bit进行加减运算。特殊值替换(interest):把一些特殊内容替换到原文件中。同样每次对8/16/32 bit进行替换。所谓的特殊内容是AFL预设的一些比较特殊的数,比如可能造成溢出的数。字典值(dictionary):把自动生成或用户提供的字典值替换或插入到原测试用例中。随机变异havoc大破坏:对文件进行大量破坏,此阶段会对原文件进行大量随机变异。包括随机翻转、加减、替换和删除等操作。文件拼接splice:此阶段会将两个文件拼接起来得到一个新的文件,并对这个新文件继续执行havoc变异。发布于 2022-06-05 18:20模糊测试赞同 228 条评论分享喜欢收藏申请转载文章被以下专栏收录模糊测试模糊测试学习
AFL漏洞挖掘技术漫谈(一):用AFL开始你的第一次Fuzzing - FreeBuf网络安全行业门户
AFL漏洞挖掘技术漫谈(一):用AFL开始你的第一次Fuzzing - FreeBuf网络安全行业门户
主站 分类
漏洞
工具
极客
Web安全
系统安全
网络安全
无线安全
设备/客户端安全
数据安全
安全管理
企业安全
工控安全
特色
头条
人物志
活动
视频
观点
招聘
报告
资讯
区块链安全
标准与合规
容器安全
公开课
报告 专辑 ···公开课···商城···
用户服务
··· 行业服务
政 府
CNCERT
CNNVD
会员体系(甲方)
会员体系(厂商)
产品名录
企业空间
知识大陆 搜索 创作中心 登录注册 官方公众号企业安全新浪微博 FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。 FreeBuf+小程序把安全装进口袋 AFL漏洞挖掘技术漫谈(一):用AFL开始你的第一次Fuzzing
关注
漏洞 AFL漏洞挖掘技术漫谈(一):用AFL开始你的第一次Fuzzing
2018-12-07 16:35:01
一、前言模糊测试(Fuzzing)技术作为漏洞挖掘最有效的手段之一,近年来一直是众多安全研究人员发现漏洞的首选技术。AFL、LibFuzzer、honggfuzz等操作简单友好的工具相继出现,也极大地降低了模糊测试的门槛。阿尔法实验室的同学近期学习漏洞挖掘过程中,感觉目前网上相关的的资源有些冗杂,让初学者有些无从着手,便想在此对学习过程中收集的一些优秀的博文、论文和工具进行总结与梳理、分享一些学习过程中的想法和心得,同时对网上一些没有涉及到的内容做些补充。由于相关话题涉及的内容太广,笔者决定将所有内容分成一系列文章,且只围绕AFL这一具有里程碑意义的工具展开,从最简单的使用方法和基本概念讲起,再由浅入深介绍测试完后的后续工作、如何提升Fuzzing速度、一些使用技巧以及对源码的分析等内容。因为笔者接触该领域也不久,内容中难免出现一些错误和纰漏,欢迎大家在评论中指正。第一篇文章旨在让读者对AFL的使用流程有个基本的认识,文中将讨论如下一些基本问题:AFL的基本原理和工作流程;如何选择Fuzzing的⽬标?如何获得初始语料库?如何使用AFL构建程序?AFL的各种执行方式;AFL状态窗口中各部分代表了什么意义?二、AFL简介AFL(American Fuzzy Lop)是由安全研究员Michał Zalewski(@lcamtuf)开发的一款基于覆盖引导(Coverage-guided)的模糊测试工具,它通过记录输入样本的代码覆盖率,从而调整输入样本以提高覆盖率,增加发现漏洞的概率。其工作流程大致如下:①从源码编译程序时进行插桩,以记录代码覆盖率(Code Coverage);②选择一些输入文件,作为初始测试集加入输入队列(queue);③将队列中的文件按一定的策略进行“突变”;④如果经过变异文件更新了覆盖范围,则将其保留添加到队列中;⑤上述过程会一直循环进行,期间触发了crash的文件会被记录下来。三、选择和评估测试的目标开始Fuzzing前,首先要选择一个目标。 AFL的目标通常是接受外部输入的程序或库,输入一般来自文件(后面的文章也会介绍如何Fuzzing一个网络程序)。1. 用什么语言编写AFL主要用于C/C++程序的测试,所以这是我们寻找软件的最优先规则。(也有一些基于AFL的JAVA Fuzz程序如kelinci、java-afl等,但并不知道效果如何)2. 是否开源AFL既可以对源码进行编译时插桩,也可以使用AFL的QEMU mode对二进制文件进行插桩,但是前者的效率相对来说要高很多,在Github上很容易就能找到很多合适的项目。3. 程序版本目标应该是该软件的最新版本,不然辛辛苦苦找到一个漏洞,却发现早就被上报修复了就尴尬了。4. 是否有示例程序、测试用例如果目标有现成的基本代码示例,特别是一些开源的库,可以方便我们调用该库不用自己再写一个程序;如果目标存在测试用例,那后面构建语料库时也省事儿一点。5.项目规模某些程序规模很大,会被分为好几个模块,为了提高Fuzz效率,在Fuzzing前,需要定义Fuzzing部分。这里推荐一下源码阅读工具Understand,它treemap功能,可以直观地看到项目结构和规模。比如下面ImageMagick的源码中,灰框代表一个文件夹,蓝色方块代表了一个文件,其大小和颜色分别反映了行数和文件复杂度。6. 程序曾出现过漏洞如果某个程序曾曝出过多次漏洞,那么该程序有仍有很大可能存在未被发现的安全漏洞。如ImageMagick每个月都会发现难以利用的新漏洞,并且每年都会发生一些具有高影响的严重漏洞,图中可以看到仅2017年就有357个CVE!(图源medium.com)四、构建语料库AFL需要一些初始输入数据(也叫种子文件)作为Fuzzing的起点,这些输入甚至可以是毫无意义的数据,AFL可以通过启发式算法自动确定文件格式结构。lcamtuf就在博客中给出了一个有趣的例子——对djpeg进行Fuzzing时,仅用一个字符串"hello"作为输入,最后凭空生成大量jpge图像!尽管AFL如此强大,但如果要获得更快的Fuzzing速度,那么就有必要生成一个高质量的语料库,这一节就解决如何选择输入文件、从哪里寻找这些文件、如何精简找到的文件三个问题。1. 选择(1) 有效的输入尽管有时候无效输入会产生bug和崩溃,但有效输入可以更快的找到更多执行路径。(2) 尽量小的体积较小的文件会不仅可以减少测试和处理的时间,也能节约更多的内存,AFL给出的建议是最好小于1 KB,但其实可以根据自己测试的程序权衡,这在AFL文档的perf_tips.txt中有具体说明。2. 寻找使用项目自身提供的测试用例目标程序bug提交页面使用格式转换器,用从现有的文件格式生成一些不容易找到的文件格式:afl源码的testcases目录下提供了一些测试用例其他开源的语料库afl generated image test setsfuzzer-test-suitelibav samplesffmpeg samplesfuzzdatamoonshine3. 修剪网上找到的一些大型语料库中往往包含大量的文件,这时就需要对其精简,这个工作有个术语叫做——语料库蒸馏(Corpus Distillation)。AFL提供了两个工具来帮助我们完成这部工作——afl-cmin和afl-tmin。(1) 移除执行相同代码的输入文件——afl-cminafl-cmin的核心思想是:尝试找到与语料库全集具有相同覆盖范围的最小子集。举个例子:假设有多个文件,都覆盖了相同的代码,那么就丢掉多余的文件。其使用方法如下:$ afl-cmin -i input_dir -o output_dir -- /path/to/tested/program [params]更多的时候,我们需要从文件中获取输入,这时可以使用“@@”代替被测试程序命令行中输入文件名的位置。Fuzzer会将其替换为实际执行的文件:$ afl-cmin -i input_dir -o output_dir -- /path/to/tested/program [params] @@下面的例子中,我们将一个有1253个png文件的语料库,精简到只包含60个文件。(2) 减小单个输入文件的大小——afl-tmin整体的大小得到了改善,接下来还要对每个文件进行更细化的处理。afl-tmin缩减文件体积的原理这里就不深究了,有机会会在后面文章中解释,这里只给出使用方法(其实也很简单,有兴趣的朋友可以自己搜一搜)。afl-tmin有两种工作模式,instrumented mode和crash mode。默认的工作方式是instrumented mode,如下所示:$ afl-tmin -i input_file -o output_file -- /path/to/tested/program [params] @@如果指定了参数-x,即crash mode,会把导致程序非正常退出的文件直接剔除。$ afl-tmin -x -i input_file -o output_file -- /path/to/tested/program [params] @@afl-tmin接受单个文件输入,所以可以用一条简单的shell脚本批量处理。如果语料库中文件数量特别多,且体积特别大的情况下,这个过程可能花费几天甚至更长的时间!for i in *; do afl-tmin -i $i -o tmin-$i -- ~/path/to/tested/program [params] @@; done;下图是经过两种模式的修剪后,语料库大小的变化:这时还可以再次使用afl-cmin,发现又可以过滤掉一些文件了。五、构建被测试程序前面说到,AFL从源码编译程序时进行插桩,以记录代码覆盖率。这个工作需要使用其提供的两种编译器的wrapper编译目标程序,和普通的编译过程没有太大区别,本节就只简单演示一下。1. afl-gcc模式afl-gcc/afl-g++作为gcc/g++的wrapper,它们的用法完全一样,前者会将接收到的参数传递给后者,我们编译程序时只需要将编译器设置为afl-gcc/afl-g++就行,如下面演示的那样。如果程序不是用autoconf构建,直接修改Makefile文件中的编译器为afl-gcc/g++也行。$ ./configure CC="afl-gcc" CXX="afl-g++"在Fuzzing共享库时,可能需要编写一个简单demo,将输入传递给要Fuzzing的库(其实大多数项目中都自带了类似的demo)。这种情况下,可以通过设置LD_LIBRARY_PATH让程序加载经过AFL插桩的.so文件,不过最简单的方法是静态构建,通过以下方式实现:$ ./configure --disable-shared CC="afl-gcc" CXX="afl-g++" 2. LLVM模式LLVM Mode模式编译程序可以获得更快的Fuzzing速度,进入llvm_mode目录进行编译,之后使用afl-clang-fast构建序程序即可,如下所示:$ cd llvm_mode$ apt-get install clang$ export LLVM_CONFIG=`which llvm-config` && make && cd ..$ ./configure --disable-shared CC="afl-clang-fast" CXX="afl-clang-fast++" 笔者在使用高版本的clang编译时会报错,换成clang-3.9后通过编译,如果你的系统默认安装的clang版本过高,可以安装多个版本然后使用update-alternatives切换。六、开始Fuzzingafl-fuzz程序是AFL进行Fuzzing的主程序,用法并不难,但是其背后巧妙的工作原理很值得研究,考虑到第一篇文章只是让读者有个初步的认识,这节只简单的演示如何将Fuzzer跑起来,其他具体细节这里就暂时略过。1. 白盒测试(1) 测试插桩程序编译好程序后,可以选择使用afl-showmap跟踪单个输入的执行路径,并打印程序执行的输出、捕获的元组(tuples),tuple用于获取分支信息,从而衡量衡量程序覆盖情况,下一篇文章中会详细的解释,这里可以先不用管。$ afl-showmap -m none -o /dev/null -- ./build/bin/imagew 23.bmp out.png[*] Executing './build/bin/imagew'...-- Program output begins --23.bmp -> out.pngProcessing: 13x32-- Program output ends --[+] Captured 1012 tuples in '/dev/null'.使用不同的输入,正常情况下afl-showmap会捕获到不同的tuples,这就说明我们的的插桩是有效的,还有前面提到的afl-cmin就是通过这个工具来去掉重复的输入文件。$ $ afl-showmap -m none -o /dev/null -- ./build/bin/imagew 111.pgm out.png[*] Executing './build/bin/imagew'...-- Program output begins --111.pgm -> out.pngProcessing: 7x7-- Program output ends --[+] Captured 970 tuples in '/dev/null'.(2) 执行fuzzer在执行afl-fuzz前,如果系统配置为将核心转储文件(core)通知发送到外部程序。 将导致将崩溃信息发送到Fuzzer之间的延迟增大,进而可能将崩溃被误报为超时,所以我们得临时修改core_pattern文件,如下所示:echo core >/proc/sys/kernel/core_pattern之后就可以执行afl-fuzz了,通常的格式是:$ afl-fuzz -i testcase_dir -o findings_dir /path/to/program [params]或者使用“@@”替换输入文件,Fuzzer会将其替换为实际执行的文件:$ afl-fuzz -i testcase_dir -o findings_dir /path/to/program @@如果没有什么错误,Fuzzer就正式开始工作了。首先,对输入队列中的文件进行预处理;然后给出对使用的语料库可警告信息,比如下图中提示有个较大的文件(14.1KB),且输入文件过多;最后,开始Fuzz主循环,显示状态窗口。(3) 使用screen一次Fuzzing过程通常会持续很长时间,如果这期间运行afl-fuzz实例的终端终端被意外关闭了,那么Fuzzing也会被中断。而通过在screen session中启动每个实例,可以方便的连接和断开。关于screen的用法这里就不再多讲,大家可以自行查询。$ screen afl-fuzz -i testcase_dir -o findings_dir /path/to/program @@也可以为每个session命名,方便重新连接。$ screen -S fuzzer1$ afl-fuzz -i testcase_dir -o findings_dir /path/to/program [params] @@[detached from 6999.fuzzer1]$ screen -r fuzzer1 ...2. 黑盒测试所谓黑盒测试,通俗地讲就是对没有源代码的程序进行测试,这时就要用到AFL的QEMU模式了。启用方式和LLVM模式类似,也要先编译。但注意,因为AFL使用的QEMU版本太旧,util/memfd.c中定义的函数memfd_create()会和glibc中的同名函数冲突,在这里可以找到针对QEMU的patch,之后运行脚本build_qemu_support.sh就可以自动下载编译。$ apt-get install libini-config-dev libtool-bin automake bison libglib2.0-dev -y$ cd qemu_mode$ build_qemu_support.sh$ cd .. && make install现在起,只需添加-Q选项即可使用QEMU模式进行Fuzzing。$ afl-fuzz -Q -i testcase_dir -o findings_dir /path/to/program [params] @@3. 并行测试(1) 单系统并行测试如果你有一台多核心的机器,可以将一个afl-fuzz实例绑定到一个对应的核心上,也就是说,机器上有几个核心就可以运行多少afl-fuzz 实例,这样可以极大的提升执行速度,虽然大家都应该知道自己的机器的核心数,不过还是提一下怎么查看吧:$ cat /proc/cpuinfo| grep "cpu cores"| uniqafl-fuzz并行Fuzzing,一般的做法是通过-M参数指定一个主Fuzzer(Master Fuzzer)、通过-S参数指定多个从Fuzzer(Slave Fuzzer)。$ screen afl-fuzz -i testcases/ -o sync_dir/ -M fuzzer1 -- ./program$ screen afl-fuzz -i testcases/ -o sync_dir/ -S fuzzer2 -- ./program$ screen afl-fuzz -i testcases/ -o sync_dir/ -S fuzzer3 -- ./program ...这两种类型的Fuzzer执行不同的Fuzzing策略,前者进行确定性测试(deterministic ),即对输入文件进行一些特殊而非随机的的变异;后者进行完全随机的变异。可以看到这里的-o指定的是一个同步目录,并行测试中,所有的Fuzzer将相互协作,在找到新的代码路径时,相互传递新的测试用例,如下图中以Fuzzer0的角度来看,它查看其它fuzzer的语料库,并通过比较id来同步感兴趣的测试用例。afl-whatsup工具可以查看每个fuzzer的运行状态和总体运行概况,加上-s选项只显示概况,其中的数据都是所有fuzzer的总和。还afl-gotcpu工具可以查看每个核心使用状态。(2) 多系统并行测试多系统并行的基本工作原理类似于单系统并行中描述的机制,你需要一个简单的脚本来完成两件事。在本地系统上,压缩每个fuzzer实例目录中queue下的文件,通过SSH分发到其他机器上解压。来看一个例子,假设现在有两台机器,基本信息如下:fuzzer1fuzzerr2172.21.5.101172.21.5.102运行2个实例运行4个实例为了能够自动同步数据,需要使用authorized_keys的方式进行身份验证。现要将fuzzer2中每个实例的输入队列同步到fuzzer1中,可以下面的方式:#!/bin/sh# 所有要同步的主机FUZZ_HOSTS='172.21.5.101 172.21.5.102'# SSH userFUZZ_USER=root# 同步目录SYNC_DIR='/root/syncdir'# 同步间隔时间SYNC_INTERVAL=$((30 * 60))if [ "$AFL_ALLOW_TMP" = "" ]; then if [ "$PWD" = "/tmp" -o "$PWD" = "/var/tmp" ]; then echo "[-] Error: do not use shared /tmp or /var/tmp directories with this script." 1>&2 exit 1 fifirm -rf .sync_tmp 2>/dev/nullmkdir .sync_tmp || exit 1while :; do # 打包所有机器上的数据 for host in $FUZZ_HOSTS; do echo "[*] Retrieving data from ${host}..." ssh -o 'passwordauthentication no' ${FUZZ_USER}@${host} \ "cd '$SYNC_DIR' && tar -czf - SESSION*" >".sync_tmp/${host}.tgz" done # 分发数据 for dst_host in $FUZZ_HOSTS; do echo "[*] Distributing data to ${dst_host}..." for src_host in $FUZZ_HOSTS; do test "$src_host" = "$dst_host" && continue echo " Sending fuzzer data from ${src_host}..." ssh -o 'passwordauthentication no' ${FUZZ_USER}@$dst_host \ "cd '$SYNC_DIR' && tar -xkzf - &>/dev/null" <".sync_tmp/${src_host}.tgz" done done echo "[+] Done. Sleeping for $SYNC_INTERVAL seconds (Ctrl-C to quit)." sleep $SYNC_INTERVAL done成功执行上述shell脚本后,不仅SESSION000 SESSION002中的内容更新了,还将SESSION003 SESSION004也同步了过来。七、认识AFL状态窗口① Process timing:Fuzzer运行时长、以及距离最近发现的路径、崩溃和挂起经过了多长时间。② Overall results:Fuzzer当前状态的概述。③ Cycle progress:我们输入队列的距离。④ Map coverage:目标二进制文件中的插桩代码所观察到覆盖范围的细节。⑤ Stage progress:Fuzzer现在正在执行的文件变异策略、执行次数和执行速度。⑥ Findings in depth:有关我们找到的执行路径,异常和挂起数量的信息。⑦ Fuzzing strategy yields:关于突变策略产生的最新行为和结果的详细信息。⑧ Path geometry:有关Fuzzer找到的执行路径的信息。⑨ CPU load:CPU利用率八、总结到此为止,本文已经介绍完了如何开始一次Fuzzing,但这仅仅是一个开始。AFL 的Fuzzing过程是一个死循环,我们需要人为地停止,那么什么时候停止?上面图中跑出的18个特别的崩溃,又如何验证?还有文中提到的各种概念——代码覆盖率、元组、覆盖引导等等又是怎么回事?所谓学非探其花,要自拔其根,学会工具的基本用法后,要想继续进阶的话,掌握这些基本概念相当重要,也有助于理解更深层次内容。所以后面的几篇文章,首先会继续本文中未完成的工作,然后详细讲解重要概念和AFL背后的原理,敬请各位期待。参考资料[1]American Fuzzy Lop[2]Yet another memory leak in ImageMagick[3]Vulnerability Discovery Against Apple Safari[4]Pulling JPEGs out of thin air[5]parallel_fuzzing.txt[6]Fuzzing workflows; a fuzz job from start to finish[7]Open Source Fuzzing Tools - 'Chapter 10 Code Coverage and Fuzzing'[8]Fuzzing for Software Security Testing and Quality Assurance - '7.2 Using Code Coverage Information' 本文作者:,
转载请注明来自FreeBuf.COM # 漏洞挖掘 # fuzzing
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
展开更多
相关推荐
关 注 0 文章数 0 关注者 本站由阿里云 提供计算与安全服务 用户服务 有奖投稿 提交漏洞 参与众测 商城 企业服务 安全咨询 产业全景图 企业SRC 安全众测 合作信息 斗象官网 广告投放 联系我们 友情链接 关于我们 关于我们 加入我们 微信公众号 新浪微博 战略伙伴 FreeBuf+小程序 扫码把安全装进口袋 斗象科技 FreeBuf 漏洞盒子 斗象智能安全平台 免责条款 协议条款
Copyright © 2020 WWW.FREEBUF.COM All Rights Reserved
沪ICP备13033796号
|
沪公安网备
AFL Fixtures and Results - AFL.com.au
AFL Fixtures and Results - AFL.com.au
Skip to main content
AFL
AFLW
AFL Play
Club Sites
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
Created by Telstra
More from Telstra
Australia's best network.
AFL Tipping
AFL Fantasy
Telstra
Telstra TV
Telstra TV Box Office
Foxtel From Telstra
AFL Logo
Latest
News
Videos
Podcasts
Gallery
Matches
Fixture
Ladder
Teams
Broadcast Guide
Match Videos
Stats
AFL Stats
Team Rankings
Premiership Winners
Brownlow Medal
Leaders & Awards
AFL On Demand
Tickets
Buy Tickets
On-Sale Dates
FAQ
Venues
Membership
Fantasy
Play AFL Fantasy
Fantasy Hub
Fantasy Draft
Tipping
Shop
AFL Logo
Menu
Video
Match Centre
Ladder
Stats
Latest
News
Videos
Podcasts
Gallery
Matches
Fixture
Ladder
Teams
Broadcast Guide
Match Videos
Stats
AFL Stats
Team Rankings
Premiership Winners
Brownlow Medal
Leaders & Awards
AFL On Demand
Tickets
Buy Tickets
On-Sale Dates
FAQ
Venues
Membership
Fantasy
Play AFL Fantasy
Fantasy Hub
Fantasy Draft
Tipping
Shop
VFL/VFLW
SANFL
WAFL
AFLW
PLAY AFL
About AFL
VFL/VFLW hub
SANFL hub
WAFL hub
Trade
Draft
Toyota AFL Club Help
Competitions & Promotions
Concussion
Mental Health & Wellbeing
Diversity & Inclusion
AFL Mint
Marvel Stadium
AFL Policies
Annual Reports
Careers
Contact Us
Clubs
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
VFL/VFLW
SANFL
WAFL
AFLW
PLAY AFL
About AFL
VFL/VFLW hub
SANFL hub
WAFL hub
Trade
Draft
Toyota AFL Club Help
Competitions & Promotions
Concussion
Mental Health & Wellbeing
Diversity & Inclusion
AFL Mint
Marvel Stadium
AFL Policies
Annual Reports
Careers
Contact Us
Clubs
Adelaide Crows
Adelaide Crows
Brisbane
Brisbane
Carlton
Carlton
Collingwood
Collingwood
Essendon
Essendon
Fremantle
Fremantle
Geelong
Geelong
Gold Coast Suns
Gold Coast Suns
GWS Giants
GWS Giants
Hawthorn
Hawthorn
Melbourne
Melbourne
North Melbourne
North Melbourne
Port Adelaide
Port Adelaide
Richmond
Richmond
St Kilda
St Kilda
Sydney Swans
Sydney Swans
West Coast Eagles
West Coast Eagles
Western Bulldogs
Western Bulldogs
Follow us on social media
Youtube
TikTok
McDonalds Match Centre
Toyota AFL Premiership Season Fixture
FULL FIXTURE: Download the complete 2024 Toyota AFL Premiership Season Fixture
Download PDF
Naming Rights Partner
Logo of partner Toyota
Major Partners
Logo of partner McDonalds
Logo of partner Telstra footer
Logo of partner Carlton Draught
Logo of partner Nab
View All Partners
Download the Official AFL App
Download on the app store
Google play
Youtube
TikTok
Page Top
AFL Logo
© 2024 AFL
Terms of Use
Privacy Policy
More AFL
About AFL
Mental Health & Wellbeing
Toyota AFL Club Help
Diversity & Inclusion
Contact Us
Get Involved
Play.AFL
Coach.AFL
Umpire.AFL
Schools.AFL
AFL Membership
Acknowledgement of Country
In the spirit of reconciliation the AFL acknowledges the Traditional Custodians of country throughout Australia and their connections to land, sea and community. We pay our respect to their Elders past and present and extend that respect to all Aboriginal and Torres Strait Islander peoples today.
Created by Telstra
Contact Us
Terms and Conditions
Privacy Policy
Copyright & Trademark
Online Security
Why not share?
Close
Share this Stream
Share on Facebook
Share on Twitter
Share on WhatsApp
Copy link
Copied to clipboard!
Share #AFL
Share this article
Loading Gallery
Close
Why not share?
Close
Share This Article
Share on Facebook
Share on Twitter
Share on WhatsApp
Copy link
Copied to clipboard!
Share
Share this article
Up Next
Autoplay
澳大利亚澳式足球联盟_百度百科
澳式足球联盟_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10澳大利亚澳式足球联盟播报讨论上传视频1897年成立的体育联盟澳大利亚澳式足球联盟 (Australian Football League,简称AFL) 是澳大利亚的澳式足球国内职业联赛,同时也指该运动的最高国际和国内管理机构。中文名澳大利亚澳式足球联盟外文名Australian Football League成立时间1897年官 网http://www.afl.com.au/所在国家澳大利亚目录1历史沿革2澳式足球的规则3场上位置4技巧5得分历史沿革播报编辑澳大利亚澳式足球联盟 (Australian Football League,简称AFL) 是最高水平的澳式足球赛事,也是澳大利亚第一体育联盟。成立于1897年,澳大利亚澳式足球联盟目前有十六球队参加,分别主客对赛22回合。联赛由三月尾进行至八月尾/九月初,然后是四星期的决赛周,并以两队在澳大利亚澳式足球联盟总决赛争夺超级杯为终结。澳大利亚澳式足球联盟是澳大利亚最多入场观众和最高收视率的运动联赛。过去三季澳大利亚澳式足球超级联赛的主、客季入场观众超过六百万人(现时世界第十最多入场观众联赛),平均入场达36,000。在维多利亚州、南澳大利亚州、西澳大利亚州、北领地、塔斯马尼亚州,都是媒体中的主流,也是最多人参与的足球类别。在盛行联盟式橄榄球的新南威尔士州、澳大利亚首都领地、昆士兰州,也愈来愈盛行澳式足球。AFL联赛的赛季由每年三月尾进行至八月尾/九月初,参赛的16支球队来自澳大利亚全国各地(包括悉尼和布里斯班),分别主客对赛22回合,最后剩余的8支球队在9月晋级决赛环节。在墨尔本板球场(MCG)进行的总决赛将整个赛季带入高潮——届时,最后幸存的两支球队角逐并争夺超级杯(Premiership)。澳式足球(Australian football,有时也被称为Aussie Rules),最大的特色是比赛激烈刺激、速度快——如果是初学澳式足球,要跟上比赛的节奏还真可能有点困难。不过,只要了解了一些基础规则,澳式足球还是很容易掌握的。下面就简单介绍一下在典型的澳式足球场上的基本规则、技巧,以及场上位置。澳式足球的规则播报编辑比赛由外场裁判员控制,外场裁判员掌握比赛的进行并判定任意球(free kick)。比赛中,外场裁判员会在以下状况发生时判罚任意球(free kick):持球过久(holding the ball)——名球员带球被擒抱住并且错过了机会而没有及时用脚踢球或者手击球将球传出。背后推人(push in the back)——球员不能在比赛期间从背后推人——无论被推球员持球与否。高位身体接触(high contact)——与对方球员在高于肩膀(或者是低于膝盖)部分的身体接触是被禁止的。球完全出界(out of bounds on the full)——若一名球员踢球使其完全出界,对方球队将获得一次任意球机会。场上位置播报编辑场上位置每支球队有22位球员,每一场比赛由其中18位队员参与。剩余4名球员则坐在替补席上。场上的18名球员被分为三组—前锋,中场和后卫队员。前锋球员前锋球员主要是全前锋(full-forward)和中半前锋(centre half-forward)。全前锋的位置接近球门,并需要尽可能为球队射门得分。与全前锋一样,半前侧卫(half-forward flankers),前锋区球员(forward pockets)和中半前锋(centre half-forward)也发挥类似的作用。中半前锋(centre half-forward)的位置最为艰巨,因为他不仅要面对对方球队最好的防守球员,还要应付其他在场上试图阻止他得球的球员。中场球员中场球员的核心是抢球员(ruckman),中路球员(centreman)和自由人(rover)。抢球员通常是球队中最高的,他的职责是成功抢夺由中路掷出的球,并摆脱场上争球的混乱局势,把球传给速度更快的中路球员和自由人。中路球员(centreman)通常身材小巧并技术娴熟,承担着带领全队进行攻势的责任。防守球员通常每队有6名防守队员。核心防守球员是全后卫(full-back)和中半后卫(centre half-back)。全后卫面对的是全前锋,他的主要任务就是阻止其得分。同样,中半后卫(centre half-back)对阵中半前锋(centre half-forward)。位置注释:Deffence 防守 Attack 进攻1. 后卫区2. 全后卫3. 半后卫4. 中半后卫5. 边锋6. 中锋7. 半前锋8. 中半前锋9. 前锋区10. 全前锋11. 抢球员12. 抢球员-自由人13. 自由人技巧播报编辑脚踢球(kicking)是澳式足球(Australian Football)中最重要的技能,包括落地奔踢(drop punt),鱼雷踢(torpedo),弧线球(banana kick)和速射(snap shot)等多种不同踢法。落地奔踢(drop punt)是大多数球员最为常用的踢法。接球(marking)在澳式足球中是指完全接住被踢出的球,同时也是澳式足球最引人注目的一大特点。球员既可以用胸部接球(用身体抱住)也可以用他们的双手接球。手击球(handball)是澳式足球中的重要部分,也是摆脱平局或者发动进攻的极好手段。手击球就是单手掌中持球并用另一只紧握的拳头将球击出。擒抱(tackling)是一项不可缺少的技术。当对方球员持球时球员们可以进行擒抱。最好的擒抱者关注对 方球员的髋部,并且放低身体重心,以确保擒抱的正确高度(腰部周围)。拍球(bouncing)在近年来已经成为一种打破场上僵局和创造空间的重要技巧。球员在带球跑动中每15米就必须拍一次球。澳式足球的特殊形状为拍球带来了一定的困难,但优秀的球员不仅能够在自然行进中拍球,还可以时刻留意那些他们可以用脚踢球或者手击球传球的接应球员。得分播报编辑比赛结束时获得最多分数的队伍为胜利方。得分的方式有2种:6分球(goal)和1分球(behind)。6分球若球被踢进中间两个较高的球门标杆之间,此进球的分值为6分。球不必完全穿过球门线,但是进球过程中任何球员都不得触碰球。主裁判(umpire)会用双手挥舞两面旗帜示意进球得分。1分球1分球的分值为1分。得分的方法有几种:球触球门标杆;球穿过较高标杆与较低标杆之间;在球越线前被另一球员接触,或者被防守队员带球过线。此进球由主裁判单手挥舞一面旗帜来示意。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000AFL News & Highlights | FOX SPORTS
News & Highlights | FOX SPORTSAFLFOX SCORESAFLCricketFootballMotorsportNRLNetballRugbyTennisBasketballGolfNHLUS SportsAFLAFLCompleteSYD12.14.86MEL9.10.64Match CentreAFLCompleteBRI12.13.85CAR13.8.86Match CentreAFL9/3 16:20 AESTGCS–RIC–Match CentreAFL9/3 19:30 AESTGWS–COL–Match CentreAFL14/3 19:30 AESTCAR–RIC–AFL15/3 19:40 AESTCOL–SYD–AFL16/3 13:45 AESTESS–HAW–AFL16/3 16:35 AESTGWS–NM–AFL16/3 19:30 AESTGEE–STK–AFL16/3 20:10 AESTGCS–ADE–AFL17/3 13:00 AESTMEL–WBD–AFL17/3 16:00 AESTPOR–WCE–AFL17/3 18:50 AESTFRE–BRI–Go to AFL Scores
SportsAFLNRLNetballFootballCricketMotorsportRugbyBasketballUFCGolfTennisNFLBoxingWWEHorse RacingeSportsBaseballSurfingNHLCyclingFantasy SportMore SportsVideoAll SportsShowsScoresFantasyGet KayoLive SportsSportsMailVenue FinderPodcastsThe LabOpinionAFLLive StreamLatest NewsPointsbetLive ScoresLadderFixtures & ResultsVideoStatsTeamsTeamsAdelaideBrisbaneCarltonCollingwoodEssendonFremantleGeelongGold CoastGWS GiantsHawthornMelbourneNorth MelbournePort AdelaideRichmondSt KildaSydneyWest CoastWestern BulldogsAFLWAFLWAFLWLive StreamFixtures & ResultsLadderAFLW TeamsAFL TippingAFLW TeamsAdelaide CrowsBrisbane LionsCarltonCollingwoodFremantleGeelong CatsGWS GiantsMelbourneNorth MelbourneWestern BulldogsNRLLive StreamLatest NewsTABLive ScoresVideoLadderNRL PremiershipNRL PremiershipLatest NewsStatsState of OriginNRLWNRLWLive StreamTeamsTeamsBroncosBulldogsCowboysDragonsEelsKnightsPanthersRabbitohsRaidersRoostersSea-EaglesSharksStormTigersTitansWarriorsWinFixtures & ResultsPlayersRLWCNRL TippingNetballLatest NewsFixtures & ResultsVideoLive StreamFootballLive StreamLatest NewsVideoFIFA World CupFIFA World Cup LadderBet NowEPLSocceroosMatildasUEFA Champions LeagueBundesligaSerie AA-LeagueAsian Champions LeagueTransfersFixtures & ResultsLive ScoresW-LeagueLigue 1E-LeagueOpinionEPLLive StreamVideosLatest NewsFixtures & ResultsLadderSocceroosLive StreamVideoSocceroos Team SelectorLatest NewsFixtures & ResultsSocceroos Team SelectorMatildasLive StreamLatest NewsUEFA Champions LeagueLive StreamVideoLatest NewsLadderFixtures & ResultsBundesligaLive StreamLatest NewsFixtures & ResultsLadderSerie ALive StreamLatest NewsFixtures & ResultsLadderA-LeagueTeamsVideoLadderFixtures & ResultsStatsTeamsAdelaide UnitedBrisbane RoarCentral Coast MarinersMelbourne CityMelbourne VictoryNewcastle JetsPerth GlorySydney FCWellington PhoenixWestern Sydney WanderersWestern UnitedMacarthur BullsAsian Champions LeagueLive StreamVideoLatest NewsFixtures & ResultsW-LeagueLive StreamVideoLatest NewsFixtures & ResultsLadderLigue 1Live StreamE-LeagueVideoLatest NewsLive & On DemandWhat is the E-League?Official RulesCompetitorsCricketLive StreamLatest NewsVideoLive ScoresFixtures & ResultsLaddersCricket World CupAustraliaSheffield ShieldMarsh One Day CupBig BashThe AshesWBBLIndian Premier LeagueCricket World CupLive StreamLatest NewsLadderFixtures & ResultsAustraliaIndiaEnglandAustraliaLive StreamVideoLatest NewsSheffield ShieldLive StreamLatest NewsFixtures and ResultsLadderMarsh One Day CupLive StreamVideoFixtures & ResultsBig BashLive StreamVideoLadderLatest NewsFixtures & ResultsSuperCoach BBLSuperCoach NewsThe AshesLive StreamLatest NewsVideoFixtures & ResultsWBBLLive StreamVideoLadderLatest NewsFixtures & ResultsIndian Premier LeagueLatest NewsLadderMotorsportLive StreamLatest NewsAustralian GP 2023Formula 1SupercarsMotoGPSchedule & ResultsVideoFormula 1Live StreamVideoSchedule & ResultsLatest NewsSupercarsLive StreamVideoStandingsSchedule & ResultsLatest NewsMotoGPLive StreamVideoLatest NewsSchedule & ResultsStandingsRugbyLatest NewsVideoWorld CupBledisloe CupWallabiesTri NationsSuper RugbySuper WFixtures & ResultsBledisloe CupLatest NewsWallabiesVideoFixtures & ResultsLatest NewsTri NationsLadderSuper RugbyLatest NewsTeamsTeamsBluesBrumbiesBullsChiefsCrusadersHighlandersHurricanesJaguaresLionsRebelsRedsSharksStormersSunwolvesWaratahsPlayersLadderFixtures & ResultsLive ScoresLine UpsStatsSuper WVideoLatest NewsBasketballLive StreamVideoLatest NewsBet NowNBANBLWNBLPodcastsFixtures & ResultsLive ScoresNBALive StreamVideoLatest NewsPodcastsFixtures & ResultsBet NowNBLLive StreamVideoLatest NewsFixures & ResultsWNBLLive StreamVideoLatest NewsUFCLive StreamVideoLatest NewsPodcastsGolfLive StreamThe Open ChampionshipLatest NewsFixtures & ResultsVideoThe Open ChampionshipLatest NewsLeaderboardTennisLive StreamLatest NewsAustralian OpenUS OpenVideoFixtures & ResultsLive ScoresWimbledonFrench OpenUS OpenLatest NewsWimbledonLive StreamLatest NewsFrench OpenLatest NewsLive StreamNFLLive StreamVideoLatest NewsFixtures & ResultsLive ScoresBet NowBoxingLive StreamVideoWWEVideoLatest NewsLive StreamHorse RacingLive StreamLatest NewsMelbourne CupMelbourne Cup SweepSpring Racing CarnivaleSportsE-LeagueBaseballLive StreamLatest NewsFixtures & ResultsSurfingLive StreamLatest NewsVideoNHLLive StreamFixtures & ResultsLatest NewsCyclingTour de FranceLatest NewsLive StreamTour de FranceLatest NewsMore SportsLatest NewsVideoLive StreamTokyo Olympics 2021Tokyo Olympics 2021Latest NewsScheduleResultsMedal TallyHistoryAthletesRecordsAll SportsLeagueBasketballAFLCricketFootballRugbyOther SportsMotorsportTennisBoxingGolfUFCSponsoredMedia CentreLeagueNRLSuper LeagueState of OriginMatty JohnsNRL 360TestsRugby LeagueNRLPress ConferencesMatty JohnsFletch and HindyTestsHighlightsFull MatchesBasketballNBANBLWNBLAFLAFLPress ConferencesBuddy 300AFL TonightAFL 360BounceCricketAustraliaBig BashCricketT20Cricket World CupIPLThe AshesDomestic CricketAustraliaExtended HighlightsDomestic CricketOne-Day CupSheffield ShieldFootballEPLA-LeagueWomen's World CupAsian CupMatildasUCL and Europa LeagueW-LeagueLa LigaFootballAsian Champions LeagueSerie ARugbySuper RugbyWallabiesRugbySponsoredOther SportsNFLOther SportsWWENetballSurfingHorse RacingOlympicsMotorsportFormula 1SupercarsMotorsportNASCARWRCTennisTennisFrench OpenUS OpenBoxingPress ConferencesBoxingGolfUS OpenGolfMastersPGA ChampionshipBritish OpenRyder CupThe Golf ShowThe Golf ShowThe Golf Show RulesThe Wedge - TipsThe Golf Show GadgetsUFCUFCFight WeekPress ConferencesSponsoredMaccasToyota UnbreakableWarnie 2020Musashi LabAmpolABS CensusBeforePayMacca's Footy Tales4WDSCSummer of Spin 2021BTSMaximus 2022AMB TRAILERTOYOTA COMMUNITY HUBMaccas Classics 2024 ShowsAFL 360Back Page LiveBill & BozBig League WrapMatty JohnsNRL TonightNRL 360The Fan
Fox sportsScores
AFLLive StreamLatest NewsPointsbetLive ScoresLadderFixtures & ResultsVideoStatsTeamsAFLWAFL Tipping
Homeafl
AFL‘What are we seeing!?’ Blues’ ‘ridiculous’ 46-pt comeback in fiery thriller: AFL LIVE
LIVE: After an unthinkable 46-point comeback, the Blues and Lions are set to fight out a see-sawing final quarter in an Opening Round thriller.
AFLDual blow amid stack of scares for stars in AFL injury carnage
Keidean Coleman and Sam Docherty were both subbed out of the clash, while several others had scares in a brutal opening half.
AFLClarko hit with huge penalty over ‘unacceptable, highly inappropriate’ Saints spray
North Melbourne coach Alastair Clarkson has been sanctioned by the AFL for his fiery exchange with St Kilda players last weekend.
AFL‘Significant interest’ for selfless Swan; Vic rival ‘really aggressive’ in hunt for Bulldog — Whispers
An unheralded Swan has earned a great’s praise amid reports he’s garnered “significant interest” from around the competition, while another report has emerged about an off-contract Bulldog.
Opening Round
AFL VIDEOSClarkson to "reinvent" after altercation2:30AFL CEO won't commit to Opening Round0:52Grundy soars for new club Swans2:26Darcy Moore: Journey From Grassroots2:38Grundy praises brand new Swans life6:04Van Rooyen sinks bicycle kick stunner?!0:41
MORE AFL VIDEOS
MORE AFL NEWSAFL‘He got me’: Star recruit wins big battle as Swans revel in ‘greatest ever list free hit’
Brodie Grundy issued an ominous statement against his former side on Thursday night, employing a smart ruck tactic to wear down his ex-Melbourne Demons teammate.
AFLControversial former AFL star dead at 69
Considered by some as a villain of the game, he scored 92 goals in his more than a decade-long career.
AFL‘Interesting conversations’: Unlikely Swans hero amid injury crisis to spark selection conundrum
Amid critical injuries to a star trio, has Sydney unearthed an unlikely ball-winning saviour?
AFLHow brutal post-GF loss chat let Lions dump their ‘luggage’... and prepped them for revenge
A few weeks after a nail biting loss to Collingwood in last year’s grand final, Harris Andrews and his partner packed their bags and headed overseas for the first time since COVID-19 hit. The trip could not come quickly enough for the Lions skipper.
(Frame content direct link: https://omny.fm/shows/fox-footy-podcasts/playlists/podcast/embed?style=cover.)MORE AFL STORIESAFL‘Unbelievable’ trade bargain monsters mate as grudge match a Swans statement: 3-2-1
Brodie Grundy got the points on Max Gawn and his old side in an ominous statement from the reborn ruckman as the Swans downed Melbourne by 22 points in the AFL’s season opener.
AFL‘Worst pain I’ve ever felt’: Swans’ superstar’s big day finished in style... but it started horribly
Brodie Grundy got a taste of both the good and bad of Sydney on Thursday, making a spectacular debut for the Swans at the SCG - and copping a gruesome injury before the game.
AFLPremiership Pie axed, Blues’ ruck surprise as Tiger ends 1353-day drought: AFL Teams
OPENING ROUND TEAMS: Collingwood has named a debutant but dropped a Grand Final hero, while Richmond names a recruit for his first game in almost four years.
AFLFears of ‘wasted’ dynasty‘ as big question mark hangs over AFL heavyweight
Stunning trade whispers, ‘drug culture’ questions and a shock pre-season retirement — all after consecutive straight sets finals exits — have pundits split on this star-studded AFL contender.
AFLW NewsAFL‘Wholesome’ drug test catch-up and ‘euphoric’ surge: AFLW star on her ‘most chaotic, emotional year’
AFLW star Chloe Molloy says the last 12 months have been the “most chaotic and emotional” of her life following her high-profile move from Collingwood to Sydney.
AFLLaidley’s comeback on hold as Dogs announce new AFLW coach
Dani Laidley’s coaching comeback is on hold after she was edged out for the Western Bulldogs job by an untried contender.
AFLLions sanctioned after missed text message causes concussion rule breach late in GF
The Brisbane Lions have been sanctioned for a “non-deliberate” breach of the AFL concussion protocols during their thrilling Grand Final win over North Melbourne.
AFLLaidley in mix.. but premiership coach return likely; Hawks ponder lifeline for great: Coach whispers
A former premiership coach could reclaim his old job at the Western Bulldogs as Hawthorn also mulls a comeback coach.
AFLDogs land huge haul, wild 1969 connection to Cats’ pick as 53 players live dream at AFLW Draft
Key forward Kristie-Lee Weston-Turner became the latest AFLW No.1 pick, as the Western Bulldogs had a busy night at the 2023 national draft.
XA NOTE ABOUT RELEVANT ADVERTISING: We collect information about the content (including ads) you use across this site and use it to make both advertising and content more relevant to you on our network and other sites. This is also known as Online Behavioural Advertising. Find out more about our policy and your choices, including how to opt-out.SubscribeGet Kayo SportsSign up to SportsmailGet FoxtelGet Foxtel BroadbandSportsAFLNRLFootballCricketMotorsportRugbyNFLBasketballTennisGolfpunters.com.auContactAbout FOX SPORTS AustraliaContact UsCareersOn Air CareSportsTGAdvertisingAdvertise with usAdvertising Preferences & Opt-outsPolicyPrivacy PolicyCookies PolicyTerms and ConditionsAccessibilitySitemapRSS FeedsNewsCorpnews.com.auThe AustralianThe Daily TelegraphHerald SunThe Courier-MailThe AdvertiserPerth NowNT NewsHIPAGESStay connected on social mediaFox Sports Australia 2024 ©
<AFL++学习日志(一)开始Fuzz与crashes分析 - Hanyin's Space
AFL++学习日志(一)开始Fuzz与crashes分析 - Hanyin's Space
Hanyin's Space
Home
Archives
Tags
RSS
About
Links
March 12, 2021 pm
3k 字
17 mins
AFL++学习日志(一)开始Fuzz与crashes分析
Last updated on 2022-05-29T16:48:43+08:00
前言
American Fuzzy Lop plus plus (afl++)是一个由社区驱动的开源工具,它结合了最新的模糊研究,使研究具有可比性,可重复性,可组合性,并且-最重要的是-可用的
。它提供了多种新功能,例如,Custom Mutator API
(传统的突变API)能够增加模糊测试处理策略,特定目标的变异也可以由经验丰富的安全测试人员编写。具体细节可以参阅AFL++
: Combining Incremental Steps of Fuzzing Research。
本文主要介绍如何使用AFL++快速开始Fuzz一个样例程序和对大量的Fuzzer-Generated
Crashes进行分类以及部分工具的安装与使用,如有错漏,也请师傅们不吝赐教。
AFL++的安装
American Fuzzy Lop plus plus (afl++) Release Version: 3.14c Github
Version: 3.15a Repository: https://github.com/AFLplusplus/AFLplusplus
Doc: https://aflplus.plus/
最简单的当然就是使用Docker啦,直接一键pull就可以使用了,具体请参见Dockerfile(一般情况下都够用了)
12docker pull aflplusplus/aflplusplusdocker run -ti -v /location/of/your/target:/src aflplusplus/aflplusplus
或者手动安装依赖后下载源码编译构建。(建议下载最新版本的编译器)
12sudo apt-get install git build-essential curl libssl-dev sudo libtool libtool-bin libglib2.0-dev bison flex automake python3 python3-dev python3-setuptools libpixman-1-dev gcc-9-plugin-dev cgroup-tools \clang-12 clang-tools-12 libc++-12-dev libc++1-12 libc++abi-12-dev libc++abi1-12 libclang-12-dev libclang-common-12-dev libclang-cpp12 libclang-cpp12-dev libclang1-12 liblld-12 liblld-12-dev liblldb-12 liblldb-12-dev libllvm12 libomp-12-dev libomp5-12 lld-12 lldb-12 llvm-12 llvm-12-dev llvm-12-linker-tools llvm-12-runtime llvm-12-tools python3-lldb-12
有时你可能需要切换下软件的默认版本。
1234sudo update-alternatives --install /usr/bin/clang clang `which clang-12` 0sudo update-alternatives --install /usr/bin/clang++ clang++ `which clang++-12` 0sudo update-alternatives --install /usr/bin/llvm-config llvm-config `which llvm-config-12` 0sudo update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer `which llvm-symbolizer-12` 0
获取源码并编译安装。
12345git clone https://github.com/AFLplusplus/AFLpluspluscd AFLplusplusgit checkout stable # 选择安装版本,默认为stablemake distrib # 安装包括qemu_mode, unicorn_mode等在内的所有模式sudo make install
make构建目标选择:
all: just the main AFL++ binaries
binary-only: everything for binary-only fuzzing: qemu_mode,
unicorn_mode, libdislocator, libtokencap
source-only: everything for source code fuzzing: instrumentation,
libdislocator, libtokencap
distrib: everything (for both binary-only and source code
fuzzing)
man: creates simple man pages from the help option of the
programs
install: installs everything you have compiled with the build
options above
clean: cleans everything compiled, not downloads (unless not on a
checkout)
deepclean: cleans everything including downloads
code-format: format the code, do this before you commit and send a
PR please!
tests: runs test cases to ensure that all features are still working
as they should
unit: perform unit tests (based on cmocka)
help: shows these build options
构建选项:
STATIC - compile AFL++ static
ASAN_BUILD - compiles with memory sanitizer for debug purposes
DEBUG - no optimization, -ggdb3, all warnings and -Werror
PROFILING - compile with profiling information (gprof)
INTROSPECTION - compile afl-fuzz with mutation introspection
NO_PYTHON - disable python support
NO_SPLICING - disables splicing mutation in afl-fuzz, not
recommended for normal fuzzing
AFL_NO_X86 - if compiling on non-intel/amd platforms
LLVM_CONFIG - if your distro doesn't use the standard name for
llvm-config (e.g. Debian)
安装完成后的系统配置:
12sudo ~/AFLplusplus/afl-system-config #将降低系统的安全性,建议仅在docker中使用ulimit -c 0 # 当程序crash时不产生core文件,在存在大量crashes的时候特别有用
开始Fuzzing
相信很多人在刚开始的时候都会有下面两个问题(包括我) 1.
不熟悉模糊测试工具; 2. 用模糊测试测试什么内容
对于第一点,建议参阅FuzzingBook和Sakura师傅的AFL源码注释,至于第二个,我建议的选择是类似于afl-training或者EkoParty_Advanced_Fuzzing_Workshop等学习类型的target,也是本系列文章的主要内容部分(后续实战目标的选择可以看我的博客)。
Fuzzing with AFL workshop Repository:
https://github.com/mykter/afl-training Doc:
https://github.com/mykter/afl-training/files/5454345/Fuzzing.with.AFL.-.GrayHat.2020.pdf
Docker: https://ghcr.io/mykter/fuzz-training
测试代码可以在此下载,核心函数代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445int process(char *input){ char *out; char *rest; int len; if (strncmp(input, "u ", 2) == 0) { // upper case command char *rest; len = strtol(input + 2, &rest, 10); // how many characters of the string to upper-case rest += 1; // skip the first char (should be a space) out = malloc(len + strlen(input)); // could be shorter, but play it safe if (len > (int)strlen(input)) /* skip */ for (int i = 0; i != len; i++) { char c = rest[i]; if (c > 96 && c < 123) // ascii a-z { c -= 32; } out[i] = c; } out[len] = 0; strcat(out, rest + len); // append the remaining text printf("%s", out); free(out); } else if (strncmp(input, "head ", 5) == 0) { // head command if (strlen(input) > 6) { len = strtol(input + 4, &rest, 10); rest += 1; // skip the first char (should be a space) rest[len] = '\0'; // truncate string at specified offset printf("%s\n", rest); } /* skip */ } else if (strcmp(input, "surprise!\n") == 0) { // easter egg! *(char *)1 = 2; } /* skip */}
使用afl-clang-fast进行编译,如提示命令未找到就将AFL++目录添加至PATH环境变量。
1afl-clang-fast -AFL_HARDEN=1 vulnerable.c -o vulnerable
优先选择更好的插桩方式,若使用afl-cc会自动选择最合适的编译器。
123456789101112131415161718192021222324+--------------------------------+| clang/clang++ 11+ is available | --> use LTO mode (afl-clang-lto/afl-clang-lto++)+--------------------------------+ see [instrumentation/README.lto.md](instrumentation/README.lto.md) | | if not, or if the target fails with LTO afl-clang-lto/++ | v+---------------------------------+| clang/clang++ 3.8+ is available | --> use LLVM mode (afl-clang-fast/afl-clang-fast++)+---------------------------------+ see [instrumentation/README.llvm.md](instrumentation/README.llvm.md) | | if not, or if the target fails with LLVM afl-clang-fast/++ | v +--------------------------------+ | gcc 5+ is available | -> use GCC_PLUGIN mode (afl-gcc-fast/afl-g++-fast) +--------------------------------+ see [instrumentation/README.gcc_plugin.md](instrumentation/README.gcc_plugin.md) and [instrumentation/README.instrument_list.md](instrumentation/README.instrument_list.md) | | if not, or if you do not have a gcc with plugin support | v use GCC mode (afl-gcc/afl-g++) (or afl-clang/afl-clang++ for clang)
设置AFL_HARDEN会让调用的下游编译器自动化代码加固,使得检测简单的内存bug变得更加容易,但会减少5%左右的性能,关于AFL++的环境变量设置可以参阅https://aflplus.plus/docs/env_variables/。
使用afl-fuzz进行Fuzz,输入可以随意写,如echo 1 > inputs/1,或带有源码中关键字的输入(推荐),如echo "u 4 capsme" > inputs/2,但需保证输入必须能使程序正常运行(即不能一开始就整个crash)。
12345mkdir inputsmkdir outecho 1 > inputs/1echo "u 4 capsme" > inputs/2afl-fuzz -i inputs -o out ./vulnerable
如果一切正常的话,睡个午觉之后你就能看见类似于如下的图:
每个独特的crash和命令参数都将存放在输出文件夹的crashes文件夹下,接下来就是对这些crash进行调试分析了。
crashes分类与自动化分析
在开始分析前请确保已安装gdb等常用二进制调试工具,我使用的是GDB的gef插件。
对crashes的分类包括调试分析Fuzz程序发现的每个crash以确定碰撞是否值得进一步分析(对安全研究人员而言,这通常意味着确定crash是否可能是由漏洞造成的),如果是,则确定crash的根本原因。详细地人工分析每一个crash都非常耗时耗力,尤其当Fuzzer已经识别出几十次或上百次crash时。
幸运的是现在已有许多可用于帮助分类或分析crash的技术和工具。虽然crashes的分类仍然可能是一个痛苦的过程,但下述的工具可以帮助减轻一些乏味的工作,至少也能大概确定最有可能触发安全相关问题的crash优先级。
crash复现与初步分析
首先我们来看看刚才得到的九个crash(这里只有八个的原因是我服务器崩了导致我重跑了一遍,但第九个crash怎么也出不来。。。。。。。。)
我们先用gdb简单调试下:
显然,我们能知道错误类型(在这种情况下为SIGSEV),发生错误的代码行(因为二进制文件是带调试信息编译的),造成崩溃的指令(movdqu xmm2, XMMWORD PTR [r13+rdi*1+0x11],大概率是因为非法访问内存),backtrace以及其他诸如stack内容等信息。但逐个这样分析crash是一件很费时费力的工作,所以我们需要一些自动化工具来帮助我们进行分析。
自动化工具的介绍和使用
GDB 'exploitable' plugin Repository:
https://github.com/jfoote/exploitable
exploitable是一个gdb插件,安装请参见安装文档,它试图确定某个特定的crash是否可能可以被利用。该插件为各类程序状态提供了一系列的分类标准,如果程序处于可以被插件识别的状态,它将为该状态分配可利用性的分类。使用如下:
此工具可以帮助用户优先分析那些最有可能被利用的crash,不太可能被利用的(或者插件无法分析的)可能仍然值得分析,但这是在调试了那些更有希望发现漏洞的crash之后。
crashwalk Repository: https://github.com/bnagy/crashwalk Doc:
https://pkg.go.dev/github.com/bnagy/crashwalk
Crashwalk是在exploitable插件基础上开发的一款工具。Crashwalk将遍历AFL生成的crashes并在crash状态下运行exploitable并生成一个crashwalk.db文件。
使用方法:
12export CW_EXPLOITABLE=/path/to/exploitable.py./cwtriage -root ./out/default/crashes/ -match id -- ./vulnerable
使用cwdump获取摘要:
1./cwdump ./crashwalk.db
afl-utils Repository: https://gitlab.com/rc0r/afl-utils Docs:
https://gitlab.com/rc0r/afl-utils/-/tree/master/docs
含有一系列协助Fuzzing的工具集合:
自动crash样本收集,验证,过滤和分析(afl-collect,afl-vcrash)
轻松管理并行(多核)Fuzz测试作业(afl-multicore,afl-multikill)
语料库优化(afl-minimize)
Fuzz状态统计监督(afl-stats)
Fuzzer队列同步(afl-sync)
自主实用程序执行(afl-cron)
其中afl-collect与crashwalk类似,也可调用exploitable进行简单分析并生成库,具体上篇文章已经介绍过了,不再赘述,直接上图:
可以看出afl-collect很快就统计了脚本数据并将crashes整合后复制到了输出文件夹,对比crashwalk的结果而言简明了很多。但需要注意的是,exploitable并没有考虑在现有防御机制下漏洞的利用难度,所以我们还需要使用下述工具来辅助我们进行分析。
AFL crash exploration mode Repository:
https://github.com/AFLplusplus/AFLplusplus#help-crash-triage Reference:
https://lcamtuf.blogspot.com/2014/11/afl-fuzz-crash-exploration-mode.html
这是一种内置于AFL中的模式,Fuzzer将一个或多个导致crash的测试用例作为输入,并使用其feedback-driven
fuzzing策略在保持crash的情况下快速枚举程序中可以到达的所有代码路径。
一般而言,我们希望Fuzzer找到更多独特的crash而不是一次又一次的同类crashes。然而,正如文档中所指出的,这种模式的目的是创建一个小的crashes库从而可以快速地检查它来分析我们对漏洞的控制程度。例如,如果crash与写入地址有关,但我们无法控制该地址,那么这个就可能不是那么有用。另一方面,如果AFL的crash
exploration模式确定我们可以通过更改输入来对任意地址执行写操作,那么我们就更有可能利用这个漏洞进行攻击。
我们将使用afl-fuzz生成的初始崩溃用例来启用崩溃探索模式,即将crashes目录作为输入并使用-C运行afl-fuzz:
1afl-fuzz -C -i out/default/crashes/ -o crash_exploration/ ./vulnerable
当AFL开始以这种模式运行时,它将检查测试用例以确保它们导致crash,如下所示:
在AFL的正常模式中,此步骤的目的是对测试用例进行检查以确保它们不会导致崩溃。AFL希望使用正常的测试文件来使程序按预期方式运行,以便可以对它们进行迭代以触发异常行为。相反,崩溃探索模式确保这些测试用例已经导致crash,因为它将尝试识别将导致相同状态的其他代码路径。
Record and Replay Framework Repository:
https://github.com/rr-debugger/rr Doc: https://rr-project.org/ Wiki:
https://github.com/rr-debugger/rr/wiki Reference: Engineering Record And
Replay For Deployability Extended Technical Report
需要Linux内核3.11或更高版本且/proc/sys/kernel/perf_event_paranoid必须小于等于1(即能够使用perf计数器)。详细要求请参阅https://github.com/rr-debugger/rr/wiki/Building-And-Installing#hardwaresoftware-configuration
。我的服务器不符合要求,就在这里仅做个介绍推荐吧,有空再补(咕了
对crash的简单调试
让我们从上面分完类的crashes中随机挑一个丢到gdb里去,在strcat(out, rest + len);处下个断点(当然在其他地方也可以,主要是这里的溢出点太明显了。。。。)
heap-view
可以看出来在执行strcat函数之前的堆还是十分正常的
heap-chunks
oops,溢出啦,让我们来看一下输入文件的内容
显然是因为strcat造成溢出覆盖了top
chunk,然后在printf调用malloc的时候触发crash。而输入我们是可以自定义的,也就是说我们现在可以控制top
chunk的size了,接下来的利用过程就交给各位师傅们了。
总结
在本文中我们介绍了AFL++的安装和各类工具的使用以帮助我们对Fuzzer生成的crashes进行分类与分析。当然,还有很多自动化分析工具没有介绍,具体可以参阅https://aflplus.plus/docs/sister_projects/#crash-triage-coverage-analysis-and-other-companion-tools。
在下篇文章中我会学着如何对一些简单的库代码和真实软件编写harness来帮助Fuzzer更好地进行Fuzzing。
#Security
#Fuzzing
#模糊测试
#AFL++
AFL++学习日志(一)开始Fuzz与crashes分析
https://mundi-xu.github.io/2021/03/12/Start-Fuzzing-and-crashes-analysis/
Author
寒雨
Posted on
March 12, 2021
Licensed under
利用AFL fuzz PDFium
Previous
华为鲲鹏服务器下MySQL8的安装与远程连接配置
Next
Please enable JavaScript to view the comments
Table of Contents
Search
×
Keyword
Contact me mundi.xu@gmail.com
总访问量
次
总访客数
人
Blog works best with JavaScript enabled
模糊测试工具 AFL的原理与实践 - 知乎
模糊测试工具 AFL的原理与实践 - 知乎首发于安全领域入个门吧切换模式写文章登录/注册模糊测试工具 AFL的原理与实践剪水作花飞件件都能,一无所长在软件开发的世界里,质量和安全性是评估产品成败的重要指标。模糊测试作为一种高效的自动化测试方法,专门用来发现程序中的错误和安全漏洞。本文旨在详细介绍 AFL(American Fuzzy Lop)的基本原理和使用方法。一、AFL 的原理介绍模糊测试是一种通过向软件输入异常或随机数据的自动化技术,目的是发现程序在处理意外或边缘情况输入时的错误。AFL 是这一测试策略中的杰出代表,它通过不断学习程序反应来改进测试用例,提高测试的覆盖率和发现漏洞的概率。AFL利用遗传算法,不断生成测试用例,并通过动态插桩技术监控程序的行为,特别是程序的代码覆盖情况。当新的输入能触发新的代码路径时,这个输入会被保存以供进一步的测试。该过程可以形成一个反馈循环,不断优化测试用例以探索更多程序状态。下面是 AFL 工作流程图,展示了从准备测试用例到监控程序行为的步骤:graph TD
A[Compile with afl-gcc] --> B[Initialize seed corpus] --> C[Fuzzing loop] --> D[Select seed from corpus queue]
D[Select seed from corpus queue] --> E[Mutate selected seed] --> F[Execute with mutated testcase]
F[Execute with mutated testcase] --> G[Monitor for crashes and coverage update] --> H{Check for new coverage}
H{Check for new coverage} -- YES --> I[Save mutated testcase to queue] --> D
H{Check for new coverage} -- NO --> D流程图详细展示了 AFL 在模糊测试中的核心步骤:编译(Compile with afl-gcc) - 使用 AFL 提供的编译器 afl-gcc,对目标程序进行编译,实现程序的动态插桩。 初始化种子库(Initialize seed corpus) - 创建初始测试用例集(种子库),这些测试用例将作为模糊测试的起点。 模糊测试循环(Fuzzing loop) - 一个不断循环的过程,根据测试结果更新种子库,并反复执行下列子步骤: a. 选择种子(Select seed from corpus queue) - 从种子库中选择一个种子文件作为当前测试的输入。 b. 突变种子(Mutate selected seed) - 对选中的种子文件应用突变算法,生成新的测试用例。 c. 执行测试(Execute with mutated test case) - 将变异后的测试用例作为输入执行已插桩的目标程序。 d. 监控结果(Monitor for crashes and coverage update) - 监控程序的执行情况,记录崩溃和代码覆盖率的变化。 覆盖率检查(Check for new coverage) - 判断是否出现新的代码覆盖,如果有,则将其保存为新测试用例。 保存新测试用例(Save new testcase to queue) - 将触发新代码覆盖的测试用例保存到队列中,用于后续的测试。 AFL采用了fork的运行模式,这使得当待测程序出现崩溃时,fuzz进程不会终止,这一点相较于LibFuzzer更具优势。然而,频繁的fork操作也导致了AFL的效率不如LibFuzzer。二、AFL安装和运行1. 支持的系统和架构AFL设计之初主要针对UNIX-like系统,其在Linux系统上有最好的支持。然而,在社区的努力下,也有Windows版本的AFL,如winafl,其可以在Windows进行模糊测试。AFL还支持多种CPU架构,其中对x86和x64架构的支持最好。如果要支持ARM架构,则需要使用AFL的QEMU模式。2. 安装步骤AFL可以通过源码进行安装:apt install git make gcc
git clone https://github.com/google/AFL.git
cd AFL && make3. 运行参数在安装并编译完 AFL 之后,可以使用 afl-fuzz 命令来启动模糊测试。一个基本的 AFL fuzz 命令如下:afl-fuzz -i input_dir -o output_dir -- /path/to/program [options] @@这里:afl-fuzz 是启动 AFL 模糊测试的程序。-i input_dir 指定包含初始化测试用例的目录。-o output_dir 指定存放的 fuzzing 结果的目录。-- 之后的部分是运行被测试程序的命令行,其中 /path/to/program 替换为需要进行模糊测试的程序的路径,[options] 是运行该程序的任何选项或参数。如果测试程序需要从文件中读取输入,可以在实际输入文件路径的位置使用 @@ 占位符。AFL 将替换 @@ 来插入它正在测试的输入文件。如果省略这个占位符,AFL 将会把模糊测试用例通过 stdin 传递给测试程序。三、AFL的使用示例本节使用一个简单的示例,演示AFL的操作步骤。这是待测源码,其功能是接受一行命令行输入,进行四则运算。其中使用了不安全的gets函数,可能导致缓冲区溢出:#include
#include
int calculate(int a, int b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case 'x': return a * b;
case '/': return b ? a / b : 0;
default: return 0;
}
}
int main() {
char input[100];
// unsafe method that may cause buffer overflow
gets(input);
int a, b, result;
char op;
if (sscanf(input, "%d %c %d", &a, &op, &b) != 3)
return 1;
result = calculate(a, b, op);
printf("Result: %d\n", result);
return 0;
}1. 编译源码使用AFL的编译器afl-gcc或afl-clang对源文件hello.c进行编译,添加所需要的代码覆盖插桩。afl-gcc或afl-clang实际上是对常规的gcc或clang编译器进行了封装,通过在编译时进行插桩,来统计fuzz过程中的代码覆盖率:afl-gcc -o hello hello.c2. 准备种子语料库不论程序是从file还是从stdin获取数据,AFL都需要一个初始语料库来启动模糊测试过程。输入(无论是来自file或stdin)是AFL用来开始探索程序行为的基础。初始语料库(seed corpus)是一组文件,其中包含了各种有效的输入示例,这些输入会被AFL用作模糊测试的起始点。从stdin读取输入时,AFL会将语料库中的每个文件内容作为输入在每次测试运行时送到程序的标准输入流中。使用AFL时,必须要有初始语料库。注意这一点AFL与Libfuzzer不同,Libfuzzer只接受stdin,不接受file,初始语料库为可选项。mkdir in
echo 'abc' > in/seed3. 执行测试在运行AFL之前,需要执行下面的系统设置命令,将字符串"core"写入到文件/proc/sys/kernel/core_pattern中。在Linux系统中,/proc/sys/kernel/core_pattern 文件用于指定当程序崩溃时,内核转储文件(core dump)的文件名模式。通过修改这个文件,可以控制内核生成core文件的行为。通过执行这个命令,生成的核心转储文件将以"core"命名,这使得AFL更容易检测和处理目标程序的崩溃情况,从而更好地进行模糊测试。echo core | tee /proc/sys/kernel/core_pattern在hello中使用gets函数从stdin中读取数据,因此在运行AFL时,不需要添加@@。是否使用@@取决于待测程序接受的输入来自file还是stdin。afl-fuzz -i in -o out -- ./hello4. 结果解读AFL开始运行后,将会看到如下的界面显示:AFL运行界面从这个界面上可以看到AFL找到了多少crash,但还不能直观地显示覆盖率。pythia是一款AFL的扩展工具,可以查看代码覆盖率的情况。AFL在运行过程中,会不断地产生输出。输出目录结构如下:out
|-- crashes
| |-- README.txt
| |-- id:000000,sig:06,src:000000,op:havoc,rep:64
| |-- id:000001,sig:06,src:000002+000003,op:splice,rep:128
| |-- id:000002,sig:06,src:000003,op:havoc,rep:32
| |-- id:000003,sig:06,src:000002+000003,op:splice,rep:16
| |-- id:000004,sig:06,src:000004,op:havoc,rep:32
| |-- id:000005,sig:11,src:000003+000002,op:splice,rep:64
| `-- id:000006,sig:06,src:000004+000005,op:splice,rep:2
|-- fuzz_bitmap
|-- fuzzer_stats
|-- hangs
|-- plot_data
`-- queue
|-- id:000000,orig:seed
|-- id:000001,src:000000,op:havoc,rep:16,+cov
|-- id:000002,src:000000+000001,op:splice,rep:4,+cov
|-- id:000003,src:000001,op:arith8,pos:1,val:-5,+cov
|-- id:000004,src:000001,op:arith8,pos:1,val:-9,+cov
`-- id:000005,src:000002+000003,op:splice,rep:4,+cov
3 directories, 17 filesqueue/ - 存放AFL生成的触发新代码路径的测试样本 crashes/ - 存放能触发待测程序崩溃的测试样本 hangs/ - 存发导致待测程序超时的测试样本 fuzzer_stats - 文本文件,包含了fuzzer的实时统计信息,如执行速度、路径覆盖等度量指标。这个文件不断更新以反映当前的fuzzing状态。 plot_data - 文本文件,包含了AFL执行过程中的统计数据。使用AFL的afl-plot工具处理plot_data文件,可以生成fuzz过程的可视化图像。 fuzz_bitmap - 这是用来记录路径覆盖率的位图(coverage bitmap),非人类可读。AFL使用这个位图来跟踪程序在处理不同输入时执行的不同分支,用来帮助AFL识别新的、唯一的代码路径,以便后续生成更具有探索性的测试样本。 四、AFL的QEMU模式前面的例子中,AFL在对待测程序的源码进行编译时插桩。实际中,我们不一定能拿到待测源码,我们要测的可能是一个已经编译好的二进制文件。这种情况下Libfuzzer就无能为力了,但AFL还能用,这依赖于AFL的QEMU模式。AFL的QEMU模式,也称为AFL-QEMU,允许你在二进制模糊测试中使用AFL,即使源代码不可用。这在对闭源应用进行模糊测试时非常有用。这种模式使用QEMU的用户模式仿真,来运行并分析非原生的二进制文件。以下是安装AFL的QEMU模式和使用步骤的指南:1. 编译QEMU支持在AFL主目录下有一个专门的QEMU模式目录。进入该目录并编译QEMU模式,过程中可能缺少依赖项,根据提示进行安装即可:cd qemu_mode
./build_qemu_support.sh2. AFL-QEMU使用步骤用法很简单,在AFL运行命令中添加-Q参数即可:afl-fuzz -i input -o output -Q -- /path/to/binary @@五、AFL的升级版——AFL++AFL++可以看作是原始AFL的"增强版",对AFL的调度策略和变异算法进行了很多改进,同时还引入了很多新特性,如CMPLOG和持久化这样的特性。1. CMPLOGCMPLOG是AFL++引入的一个新功能,类似于Libfuzzer中的trace-cmp,它可以极大地提高代码覆盖率。CMPLOG的主要作用是对程序中的所有比较操作进行记录,包括等于、不等于、小于等逻辑比较。当fuzzer执行时,CMPLOG能够捕获比较操作的参数,并将对应的值添加到fuzzer的输入测试用例中。这个过程实际上帮助fuzzer更好地理解代码中期待的输入,特别是那些用于逻辑分支的字面值和魔法数字。这种理解能够导向更深入的路径覆盖,进而揭露隐藏更深的潜在缺陷。2. 持久化模式AFL的持久化(persistent)模式允许目标程序在单个进程周期内重复执行多次模糊测试用例。这对性能产生了显著的提升,因为它减少了程序启动和终止的开销,特别是当测试的目标程序需要很大的初始化成本时。在AFL++中,持久化模式的执行更为高效,它允许模糊器在目标程序中一次性执行多个测试用例,而非每次执行一个用例都重启目标程序。有了持久化模式,AFL++能够在相同的时间内执行更多的测试迭代,从而提高漏洞检测的速度。六、小结AFL是一款强大的模糊测试工具,实践中AFL++的应用非常广泛。相比Libfuzzer,AFL++不局限于源码,并且支持多种cpu架构,还有丰富的插件生态可以使用。但模糊测试本身存在覆盖率瓶颈的问题,难以探索复杂的程序路径,这时候可以结合其他的技术,如符号执行来突破。发布于 2024-01-31 13:01・IP 属地中国台湾fuzzing赞同添加评论分享喜欢收藏申请转载文章被以下专栏收录安全领域入个门吧工具、原理
AFL | 一篇图文带你看懂澳式足球_比赛
AFL | 一篇图文带你看懂澳式足球_比赛
新闻
体育
汽车
房产
旅游
教育
时尚
科技
财经
娱乐
更多
母婴
健康
历史
军事
美食
文化
星座
专题
游戏
搞笑
动漫
宠物
无障碍
关怀版
AFL | 一篇图文带你看懂澳式足球
2018-09-28 14:28
来源:
爱德留学
原标题:AFL | 一篇图文带你看懂澳式足球
本周末澳式足球联赛总决赛
墨尔本的小伙伴们可以多放一天假
是不是很开心!!
可是,你真的了解澳式足球吗?
小编记得刚到澳洲的时候,Homestay的房东问我喜欢什么体育运动,我说“football”;于是他就每周都拉着我看橄榄球比赛!
我是满脸写着懵!懵!懵!
他说:“是你说喜欢足球的啊?!”
展开全文
相信类似的体会,很多华人朋友都有。
想要融入当地人的圈子
聊聊体育是个很好的切入点!
但澳洲的主流运动好像
离我们熟悉的领域比较远
想了解澳式足球
来来来,看这里
一篇图文带你看懂澳式足球
本次决赛
澳式足球简介
澳式橄榄球(Australian Rules football), 又称为澳式足球(Aussie football), 是一种源自于墨尔本地区的球类运动。在风行澳式足球的地区,这种运动就被简称为"footy"。
与其他足球(消歧义)的规则不同,澳式足球(就澳大利亚足球联盟规则而言),每队含替补球员在内共有二十二人 ,比赛在板球场或差不多大小的草地球场上进行,球场长度可达185公尺 (200 码); 这样的场地比起其他规则的足球赛大很多。
主要技术
脚踢球(kicking)
是澳式足球中最重要的技能,包括落地奔踢、鱼雷踢、弧线球和速射等多种不同踢法。落地奔踢是大多数球员最为常用的踢法。
接球(marking)
在澳式足球中是指完全接住被踢出的球,同时也是澳式足球最引人注目的一大特点。球员既可以用胸部接球(用身体抱住)也可以用他们的双手接球。
手击球(handball)
是澳式足球中的重要部分,也是摆脱平局或者发动进攻的极好手段。手击球就是单手掌中持球并用另一只紧握的拳头将球击出。
擒抱(tackling)
是一项不可缺少的技术。当对方球员持球时球员们可以进行擒抱。最好的擒抱者关注对方球员的髋部,并且放低身体重心,以确保擒抱的正确高度(腰部周围)。
拍球(bouncing)
在近年来已经成为一种打破场上僵局和创造空间的重要技巧。球员在带球跑动中每15米就必须拍一次球。
比赛规则
比赛由外场裁判员控制,外场裁判员掌握比赛的进行并判定任意球(free kick)。
外场裁判员会在以下状况发生时判罚任意球:
持球过久(holding the ball)
背后推人(push in the back)
高位身体接触(high contact)
球完全出界(out of bounds on the full)
得分
6分球 (goal)
若球被踢进中间两个较高的球门标杆之间,此进球的分值为6分。球不必完全穿过球门线,但是进球过程中任何球员都不得触碰球。
1分球 (behind)
得分的方法有几种:球触球门标杆;球穿过较高标杆与较低标杆之间;在球越线前被另一球员接触,或者被防守队员带球过线。此进球由主裁判单手挥舞一面旗帜来示意。
澳式足球联赛
澳大利亚澳式足球联盟 (Australian Football League,简称AFL) 是最高水平的澳式足球赛事,也是澳大利亚第一体育联盟。
联赛由三月尾进行至八月尾/九月初,然后是四星期的决赛周,并以两队在澳大利亚澳式足球联盟总决赛争夺超级杯为终结。
参赛队伍
本赛季参赛队伍,以及常规赛排名
澳式足球 VS 澳式橄榄球
广义上来讲,澳洲人口中的“footy”,其实同时指澳式足球(Australian rules football)与联盟式橄榄球(Rugby league football)两种运动。看上去都是橄榄球,规则其实不尽相同。
主要的不同点,反映在两个不同的联赛:
全国橄榄球联赛
National Rugby League, NRL
澳式足球联盟
Australian Football League,AFL
两者都是全国性质的联赛;AFL是以维州为中心,而NRL是以新州为中心。
两者的发展历程,比赛规则等等也是大同小异。
上面我们主要介绍了AFL
这里再简单梳理一下NRL:
联盟式橄榄球在新南威尔士州、昆士兰州更流行,比赛在长方形的草地上举行,两队均派出十三名选手参赛,外加四名替补球员。
比赛时间分上下半场,各四十分钟。如果八十分钟内两队打平,根据具体赛制,可能就以平局收场,或者进入加时金球制胜。每队各十个换人名额,换人次数不限。
联盟式橄榄球的得分方式分为两种:Try(触地得分)与Goal(踢球得分)。
触地得分是指攻方球员通过传球扯开防守线,然后带球冲到守方得分区触地后可一次得4分,之后自动得到一次踢球射门的机会,将球射入“H”型球门横杆上方后可得2分。
如果防守方在己方半场犯规,而犯规地点离球门比较近,攻方可以选择射门,射进得1分。
从每年的三月到十月是NRL的比赛日,16支球队将在常规赛进行26轮比赛.26轮比赛结束后排名榜首的球队被称为“小冠军”,排名前八的球队再逐队厮杀决出最后两支球队进行决赛。
现在你对OZ Footy有了一定了解了吧
百闻不如一见
真正的了解澳式足球
从欣赏本次AFL总决赛开始吧
返回搜狐,查看更多
责任编辑:
平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
推荐阅读
从AFL开始FUZZ之旅 - 知乎
从AFL开始FUZZ之旅 - 知乎切换模式写文章登录/注册从AFL开始FUZZ之旅合天网安实验室原创:hpw合天智汇原创投稿活动:重金悬赏 | 合天原创投稿等你来前言我想介绍一些不一样的东西-fuzz,也就是大家常说的模糊测试。Fuzz是近几年来安全顶会的热门,投稿难度也越来越大。一次成功的fuzz甚至能挖掘出几十个CVE。我准备在该文章中先介绍fuzz相关的知识,然后以AFL为例演示一个fuzz例子;不足之处还请各位读者斧正。什么是Fuzz进行软件漏洞挖掘时,通常有静态分析(staticanalysis)、动态分析(dynamicanalysis)、符号执行(symbolicexecution)、模糊测试(fuzzing)这几种技术手段。静态分析就是不真正的运行目标程序,但是通过对它进行各种语法、语义、数据流等的分析,来进行漏洞发掘。静态分析是由静态分析软件完成的;它的速度快,但是误报率高。动态分析就是我们通常见到的大佬们用od一步步跟踪程序运行进行的分析。它的准确率很高,但是需要调试人员丰富的知识储备,而且这种调试方法很难进行大规模的程序漏洞挖掘。符号执行简单来说,就是试图找到什么输入对应什么样的运行状态,它要去覆盖所有的执行路径。因此,当被分析的程序比较复杂,有很多执行路径时,就会遇到路径爆炸的问题。模糊测试不需要人过多的参与,也不像动态分析那样要求分析人员有丰富的知识。简单解释,它就是用大量的输入数据自动去执行程序,从而发现哪些输入能够使程序发生异常,进而分析可能存在的漏洞。当前比较成功的fuzzer(执行模糊测试的程序)有AFL、libFuzzer、OSS-Fuzz等。用AFL来示意一个典型的Fuzz过程调试人员为程序提供一些输入,即最左侧的testcases,AFL加载后将其放入一个队列中。对于每一次迭代,AFL首先从队列中取出一个testcase,然后对它进行修剪,去除不必要的数据以提高运行效率;再然后对输入进行变异操作,变异的模式很多,可以产生很多新的testcase。对于这些新产生的输入,将它们送到目标程序运行,若能够产生新的执行路径或者导致程序崩溃,就把它再放到队列中。在整个过程中,程序崩溃会被记录下来,它可能代表一个潜藏的漏洞。Fuzz的技术要点那么这一项技术主要有哪些难点,或者说影响挖掘效率的点呢?在安全会议上经常能看到对于这些问题的研究,比如2019年USENIX上用粒子群算法来辅助变异操作符的选择,AFL的变体AFLGo其实也是在CSS上发表的。输入数据因为要用输入数据去自动执行程序,很明显数据的生成会极大的影响挖掘效率。1.假如目标程序的输入格式是pdf文件,那么不符合该格式的文件就很难进入到目标程序内部进行运行测试。2.即使是符合输入要求的数据,也许数据A和数据B触发相同的执行路径,那么让A和B都运行就是在浪费资源。3.对于单独的数据A,也许其中真正控制执行路径的只是一小部分,那么在其余部分的处理就是在浪费资源。对于第一个输入格式的问题,generation-basedfuzzer给出了可行的解决方案。简单来说,它要求一些关于输入数据格式的先验知识,这样它就可以更好地根据用户输入数据产生新数据。对于第二和第三个问题,AFL中给出了相应的解决办法。Afl-cmin能够给出输入数据的最小集合,也就是会把上述的A和B留其一;afl-tmin则能够将单个输入文件进行压缩。变异操作用户给出的数据是有限的,但是进行fuzz测试需要大量的数据,因此fuzzer会根据用户给出的数据产生新的数据,这一过程即所谓的变异操作。那么变异过程中定义哪些变异操作符(即哪些改变原输入数据的操作)?在一次变异时面对多个变异操作符该选择哪个?选用哪些输入数据进行变异?提高覆盖率Fuzz的本质就是用输入去检测当前输入对应的执行路径会不会产生可能的漏洞。因此,如果覆盖更多的路径,就意味着可能检测出更多的漏洞。提高覆盖率更像是一个根本性问题,前两个问题的解决其实也是在提高覆盖率。AFL实战安装要点AFL其实有很多模式,除了标准模式,还有llvm模式和qemu模式。得益于clang,llvm模式下fuzz速度更快;qemu模式则可以对二进制程序进行fuzz。有很多人在安装时并没有同时编译安装llvm模式,虽然可以稍后单独编译,但是AFL官方文档中建议如果想要所有系统用户都可以使用llvm模式,就在编译安装AFL时同时安装llvm模式。安装时还有一个坑:很多人喜欢在docker中使用它,但是别忘了在开启container时加上—privileged选项,否则在下述某一命令执行时会失败。安装过程我就不赘述了,但是这里推荐一个安装过程。如果docker不加—privileged这一条命令会失败:这里是在安装AFL时同时编译安装了llvm模式:编译安装目标程序我们选取w3m作为这次的目标程序,在下载源码后,为了AFL能够顺利进行fuzz,我们不能直接用gcc进行编译,而是要用afl提供的afl-gcc进行。Afl-gcc干了什么呢?其实我们从源码得到二进制程序,要经过从源代码到汇编代码,从汇编代码到机器码的过程。Gcc(特指gcc编译器)能够把源代码变成汇编代码,而as(也是GNU编译器套件一部分)则将汇编码变成机器码。Afl-gcc是gcc编译器的一个封装,它一方面调用gcc编译器进行编译,另一方面指定afl-as而非as进行汇编。Afl-as也是as的一个封装,它一方面分析汇编代码,进行插桩操作,另一方面调用as将插桩后的汇编代码变成机器码。可能又有人要问了,什么是插桩?简单来说,它就是在目标程序的代码中插入一些额外的代码,来通知fuzzer目标程序的运行情况。简单了解原理后,来对w3m进行编译: cd ./w3m CC=afl-gcc ./configure make由于我们只进行fuzz,不想真正安装w3m,因此不用进行makeinstall操作。收集与处理输入数据为了能够进行fuzz,我们需要提供一些输入数据。W3m是一款命令行浏览器,因此我们可以收集一些html文件作为输入。注意,AFL作者建议输入文件不要太大,尽量保持在1KB内。这里我找了几个文件作为示例:就像前面说的,我们可以使用afl-cmin和afl-tmin进行输入数据的缩减。下图是使用afl-cmin取最小集合的示例。因为输入太少了,它们都可以触发不同的路径,因此并没有文件被删除。下图是使用afl-tmin对单个文件进行缩减的例子。为了提高速度,你可以写一个脚本多线程对所有输入文件进行缩减操作,否则这一过程是很费时的。开始运行通过以下指令开始对w3m的fuzz操作:如果你不主动停止,这一个fuzz的过程是不会结束的。在右上角,你可以看到当前已经发现了多少个uniquecrashes。运行的反思上述只是一个简单的测试,那么实践中,还有哪些技巧来优化上述的fuzz过程呢?你可以采用AFL的并行模式来提高fuzz效率你可以在AFL运行一段时间后,暂停运行,进入保存队列的文件夹对队列中的test cases进行缩减,然后再继续运行;你也可以通过采用llvm模式来提高速度。结语虽然上述fuzz是对本地程序进行的fuzz;其实,借助于丰富的插件,或者编写简单的入口代码,AFL也可以对网络程序,库文件等进行fuzz。写这篇简单的文章希望能够将Fuzz介绍给大家,使得大家能够将fuzz应用到自己的漏洞挖掘中。合天网安实验室的相关实验(Fuzz之AFL),让你了解AFL的使用方法,通过AFL模糊测试一些简单的软件,学习fuzz的基本方法和思想。实验:Fuzz之AFL(合天网安实验室)声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关!发布于 2019-11-04 14:52网络安全信息网络安全信息安全赞同 492 条评论分享喜欢收藏申请