l1ackers
Not marked. Sign in and it follows you. Next: 054: What a scanner can know

~/tutorials/053-burp-the-same-idea-in-a-different-hand.md

053: Burp, the same idea in a different hand

Two lessons ago you installed a proxy on purpose and drove it from a command line. Everything it did, its history, its passive findings, its scripted spider, one other tool does with the same architecture and a different philosophy. Burp Suite, from PortSwigger, is the tool most professional web testers hold in, and this lesson's job is to take the mystery out of that fact. It is the same idea in a different hand. The proxy is the idea. The hand is what you are choosing.

What this lesson is for

Not a Burp manual. The transfer. If you understand ZAP from the last two lessons, you already understand Burp, and this lesson makes that explicit, part by part, so that the choice between them becomes a choice about workflow rather than a cliff of new learning. And the choice is real, because the hands differ in ways that matter: Burp's manual tools are the industry's smoothest, and its automated ones sit on the far side of a paywall, where ZAP's are all free.

What the reader meets

Burp Suite Community Edition, the free tier, downloaded from portswigger.net or installed from your distribution's package manager. It is a desktop program, first run and every run: a wizard asks which edition, which project, which settings, and then you are in.

The same three shapes you already know, wearing Burp's names. The proxy listener, on loopback 8080 by default, is the same man in the middle you invited in lesson 050, and curl drives it with the same one flag:

$ curl -x http://127.0.0.1:8080 http://127.0.0.1:8422/

The history, which Burp calls HTTP history under the Proxy tab, is the same held conversation. After pushing four requests through the listener, from the lab site's three pages to one external fetch, the history reads, receipted from a real session:

1  http://127.0.0.1:8422  GET /            200  2540  HTML
2  http://127.0.0.1:8422  GET /page2.html  200  1920  HTML
3  http://127.0.0.1:8422  GET /page3.html  200   195  HTML
4  http://example.com     GET /            200   854  HTML  Example Domain

Four conversations, held, numbered, with size and type and title per row. That is lesson 050's promise kept by the other hand.

And the browser, which is where the hands first visibly differ. Burp ships a preconfigured embedded browser, Chromium pre-wired to its own proxy, so the configuration step of lesson 050 disappears: click the button, browse, everything lands in the history. ZAP has the same feature, added later, and the difference is polish, not kind.

The instrument

The transfer table, which is the lesson's core. Read it as: you already know the left column.

ZAP                        Burp                          Same because
daemon, port 8080          proxy listener, port 8080     a proxy is a proxy
JSON API                   no API in Community           ZAP's engine is free-range
history / messages         Proxy -> HTTP history         held conversations
spider                     spider, Pro only              walk the link graph
passive scan               live passive, all editions    read what passes through
active scan                scanner, Pro only             send attack traffic
sendRequest / edit         Repeater                      change one thing, resend

Three rows deserve their weight spoken. The passive scanner runs in every Burp edition, free, and it is the same mechanized reading of responses from lesson 050: browse through the proxy and findings accumulate without any attack fired. Repeater is Burp's name for the power ZAP gave you with sendRequest, and most testers would say its implementation, request and response panes side by side with a send button, is the single best manual tool in the industry. It is free in Community. And the spider and the active scanner, the automation, sit behind the Professional license.

That paywall line is the honest fork in the road, and both roads are walked by professionals. ZAP if you want every capability free, an API, and headless operation in your CI. Burp if your work is primarily manual, if your employer buys the license, or if you are heading toward the jobs whose interviews assume it. The transfer table means you lose nothing either way, because the idea, the proxy, is the same instrument, and your skills in it move across by renaming.

One more difference, the one nobody plans for and everyone meets. Burp's first run is a wizard: edition, project, settings, and in recent versions a license prompt for Community too, a dialog tree walked by clicking. ZAP's daemon starts with one command and no screen. The wizard is not hard, but it is a fact of the hand: Burp wants a human at the glass, at least the first time, and a fully scripted Burp lab is genuinely harder to build than a fully scripted ZAP one. That is not a verdict. It is the difference between a tool built for the tester at the desk and a tool built to live in pipelines, and knowing which you are building is part of choosing the hand.

Try it

  1. Install Burp Community, walk the wizard, and click the embedded browser button. Browse your lab box for two minutes. Then open Proxy, HTTP history, and find your four conversations waiting. No configuration was done, and the instrument from lesson 050 exists anyway. That is the polish you are evaluating.
  2. Run the transfer table against your own hands. For each row, do the thing you already know on the ZAP side, then find its Burp name and do it there. The rows that feel identical are the transfer working. The rows that feel different, Repeater especially, are the new information.
  3. Send one request through Burp's proxy with curl, exactly the line above, then find it in the history. You have now used the two tools through one shared habit, the curl flag from lesson 050, and no tool you ever meet can take that habit away from you.
Reveal the answer

The same-session receipt, both tools, one lab, and what reading it teaches. The lab site was served on a bare port, three tiny pages, index linking two. Through ZAP, lesson 050's receipts: the page fetched, the history count rising, passive alerts accumulating on the login page. Through Burp, this lesson's receipts, same site, same hour:

listener: loopback 8080, up
curl -x http://127.0.0.1:8080 http://127.0.0.1:8422/   -> 200
history: 4 rows, / and page2 and page3 and example.com, all 200

Put the two receipts side by side and read them as one truth wearing two fonts. ZAP's history said: messages, numbered, JSON, queryable by script. Burp's history said: rows, numbered, titled, readable by human. Same held conversations, same passive scanning while they arrived, same loopback listener discipline, same curl flag driving either one. The tools did not disagree about anything. They disagreed about who they were talking to, a script or a person, and that is the entire difference between them, expressed in interface choices and a license line.

The choice that remains, once you see it that way, is not which tool to learn. It is which audience your work has. Scripts and pipelines, lean ZAP, the API is the product. Human-paced manual testing, lean Burp, Repeater and the ecosystem are the product. Test for a living long enough and you will hold both, and the transfer table above is the bridge you will cross each time, usually without noticing, because the proxy underneath is one idea and it is yours.

What this lesson does not claim

Burp Professional's deepest features, Intruder at full speed, Collaborator, the extension marketplace's heavier tools, are named here but not taught, because they live behind a license this site does not assume you hold. And the wizard-walking receipt above came from a headless lab where the wizard was driven by scripted clicks, which is a lab stunt, not a workflow: your first run will be your own mouse and it will be simpler than this paragraph. The lesson claims the transfer, and the transfer is real: one idea, two hands, and the habits you built in the free one are the habits you keep in either.

Not marked. Sign in and it follows you. Next: 054: What a scanner can know
l1ackers · shell this is a way in, not a requirement
$