You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At one point in the past, the gtfobins module supported both "printable", "raw" and "base64" streams. The intent was that some commands may not be able to transfer raw un-encoded data. This requirements was basically due to the fact that the data-transfer method of pwncat couldn't accept or write data in an unencoded format directly.
Largely, this requirement is gone with the newer framework changes, which left gtfobins in a weird place. The base64 stream is no longer supported, and the print stream is largely not needed anymore. Some base64 streams were left in the database which can cause problems in edge cases.
In an effort to get a quick fix out, I'm splitting this problem up. I'm pushing a fix now to ensure that only raw streams are selected for now. This should ensure that pwncat doesn't crash in those sitautions (as the gtfobins module won't return incompatible payloads), but may render some gtfobins entries useless. A larger and more intensive look needs to be taken at the gtfobins module to update the payloads, but this is a large task.
Separately, I'm working on a fix-gtfobins-streams branch which will implement test cases for every gtfobins database entry, and attempt to prune older print and base64 entries from the database. This is going to take time as there's a lot of entries and testing is tedious at best.
This issue represents two things: a bug in pwncat as well as an enhancement/feature moving forward so I'm marking it as such. The bug should be fixed this evening, but the larger enhancement will be longer standing. I'll make sure to reference this issue in the resulting pull request for the bug in order to better track the problem. 👍
The text was updated successfully, but these errors were encountered:
Bug Description
At one point in the past, the
gtfobins
module supported both "printable", "raw" and "base64" streams. The intent was that some commands may not be able to transfer raw un-encoded data. This requirements was basically due to the fact that the data-transfer method of pwncat couldn't accept or write data in an unencoded format directly.Largely, this requirement is gone with the newer framework changes, which left
gtfobins
in a weird place. Thebase64
stream is no longer supported, and theprint
stream is largely not needed anymore. Somebase64
streams were left in the database which can cause problems in edge cases.In an effort to get a quick fix out, I'm splitting this problem up. I'm pushing a fix now to ensure that only
raw
streams are selected for now. This should ensure that pwncat doesn't crash in those sitautions (as thegtfobins
module won't return incompatible payloads), but may render somegtfobins
entries useless. A larger and more intensive look needs to be taken at thegtfobins
module to update the payloads, but this is a large task.Separately, I'm working on a
fix-gtfobins-streams
branch which will implement test cases for everygtfobins
database entry, and attempt to prune olderprint
andbase64
entries from the database. This is going to take time as there's a lot of entries and testing is tedious at best.This issue represents two things: a bug in pwncat as well as an enhancement/feature moving forward so I'm marking it as such. The bug should be fixed this evening, but the larger enhancement will be longer standing. I'll make sure to reference this issue in the resulting pull request for the bug in order to better track the problem. 👍
The text was updated successfully, but these errors were encountered: