攻撃を実行するには、あとは「戻りアドレス」として具体的にどの程度の値を代入すればよいかを知ればよい。しかし攻撃の標的となる組織の環境で戻りアドレスの絶対アドレスがいくつ程度の値になるのかを事前に知る事は難しい。そこで相対アドレスを利用して戻りアドレスを適切に選ぶ攻撃テクニックを紹介する。この攻撃のシナリオでは、攻撃者はシェルコードを含んだ攻撃用のプログラムh（をコンパイルして作った実行コード）を攻撃の標的となる組織に送りつけ、hのサブルーチンとしてgを呼び出す事で攻撃を行う。この攻撃用プログラムhでは、変数xを宣言が宣言されているものとする。hが標的の環境でgを呼び出したとき、gのスタックフレームはスタック領域上でhのスタックフレームのすぐ隣に配置される事から、攻撃用文字列を入れ込むgの変数の絶対アドレスvar_addはvar_add = &x - (小さな値)になるはずである。ここで「&x」はxのアドレスを表す。既に述べたようにNOPスレッドを使った攻撃では戻りアドレスとしてvar_add近辺の値を選べば成功するので、攻撃者はこの「小さな値」を決定しさえすればよい。よって攻撃者は関数gの実行コードを事前に入手し、(シェルスクリプト等を使って)NOPスレッドの長さや戻りアドレスを変えながら攻撃対象のプログラムを何度も実行することで適切な「小さな値」を選び、その「小さな値」を攻撃用プログラムhに書き込んでおけばよい。
スタックベースのバッファオーバーフローは「上書きされるバッファがスタック（すなわち、局所変数や、まれに関数のパラメータ）にアロケートされる」事が可能な場合に生じる脆弱性である。このような脆弱性はファジングを使用して発見されることが多い。
バッファAの値を他のバッファBにコピーするとき、BのバッファサイズがAのバッファサイズよりも大きいことをチェックしない場合に生じる脆弱性である。この脆弱性は、プログラマーがこのようなチェックの実装を怠った事により生じる。これはプログラマーが最低限のセキュリティチェックすらしていないことを強く示唆する。脆弱性の具体例としては、例えばC言語やC++において、配列サイズをチェックする事なく、配列にstrcpyやscanfで文字列等をコピーするといったものがある。攻撃者は意図的に大きな入力をstrcpy、scanf、getsに与えることで、古典的バッファオーバーフローを不正に生じさせる事ができる。例えば攻撃者がバッファAをバッファオーバーフローさせる事により、Aの隣りにある変数xを不正に変更できた場合、xがセキュリティ上重要なデータ（例えば管理者権限を持っているか否かを判定するビットを保持している）であれば、セキュリティ上重要な問題が生じる。
C言語の標準入出力関数であるgets関数はバッファ長のチェックを行わないで標準入力をバッファに書き込むので、この関数を使う全てのプログラムには、バッファオーバーランによる不正動作の危険性がある。また使い方が分かりやすいという理由でC言語初心者向けの入門プログラミングでしばしば用いられるscanf関数も書式指定を誤った場合は同じ危険性を持っている。これらの関数を実用的なプログラムで用いる場合には注意が必要である。次のプログラムはgets関数を用いた例である（セキュリティ上、gets関数はそれ自体をテストする以外の目的で使用されるべきではない。Linux Programmer's Manualには「gets()は絶対に使用してはならない。」と書かれている）。バッファ長として200バイト確保されている。gets関数はバッファの長さについては関知しないため、200バイトを超えても改行文字かEOFが現れなければバッファオーバーランが発生する。#include <stdio.h>int main(int argc, char *argv[]){  char buf[200];  gets(buf);  ....}gets関数の代わりにfgets関数を用いることで、この問題を回避できる（fgets#getsを置き換える例等を参照）。fgets関数にはバッファのサイズを渡すことができ、このバイト数を超えてバッファに書き込みを行わない。したがってバッファサイズが正しく設定されていれば、fgets関数においてバッファオーバーランは起こり得ない。これ以外のC言語の標準文字列処理関数の多くにも同様の問題（脆弱性）がある。
1993年（平成5年）8月22日、支える会と弁護団は、3人をタイから日本へ連れてきた現地のリクルーターやタイと日本のブローカー、スナック経営者Y1・Y2に対する告訴状を作成して水戸地方検察庁に持参した。罪名は、誘拐罪・監禁罪・売春防止法違反であった。検事の対応は、「タイ人の名前がわからないのは話にならない」「誘拐はタイの問題」「監禁罪と売春防止法違反なら受けても良い」などとしたうえで、地検では捜査人員が少ないので茨城県警察本部へ行った方が良いというものであった。県警本部では所轄署に提出するように言われ、支える会のメンバーらは下館警察署に向かった。対応した下館警察署の担当者は、すでに裁判が始まっていることを理由に「警察としては終わった事件」との認識を示した。支える会のメンバーは誘拐罪・監禁罪・売春防止法違反であると主張したが、最終的には「売春について重要な情報があったということで内偵に入る」との言質と引き換えに告訴状のコピーを渡すだけで引き下がった。ただし、その後スナックに捜査が入ることはなく、事件時から店名こそ変えたが、その後もそれまでと変わらない営業を続けた。刑事告発が不調に終わったのを受けて、3人は支える会の支援のもと、9月16日に水戸地方裁判所土浦支部においてスナック経営者Y1・Y2に対する未払い賃金および慰謝料を求める民事訴訟を起こした。3人はスナックで、開店時間には出勤してホステスとして接客し、買春客と店外へ出ても閉店時間前であれば店に戻り、閉店後には掃除もしていた。第一審で証言に立ったY1・Y2は、女性たちはあくまでスナックのホステスとして雇っていたのであって、3,000円の時給も支払っており、3人の分も被害者に渡していたと証言していた。3人は、労働基準法の直接払いの原則をもとに被害者へ支払いは違法であるとして時給3,000円で計算した賃金と、Y1・Y2が売春の強制に関与していたことに対する慰謝料を加えて合計1,500万円を請求した。当初Y1・Y2は全面的に争う姿勢を示したが、審理が進むと証人尋問を欠席するようになり、さらにY1・Y2の弁護人も辞任して、自らの主張の立証を事実上放棄した。裁判は1995年（平成7年）3月に結審し、同年6月、水戸地裁土浦支部はY1・Y2に1,200万円の支払いを命じる原告勝訴の判決を下した。