小编Chr*_*ris的帖子

在GDB中写入十六进制

我在软件安全类中,我们目前正在学习缓冲区溢出以及它们如何被利用.我有一个程序,我知道如何利用,但我似乎无法这样做,因为我必须写十六进制,它不允许我写.

我需要编写从以下位置生成的数据:

perl -e 'print "A"x48; print "\x1b\x88\x04\x08";'
Run Code Online (Sandbox Code Playgroud)

但是,我无法将该输出重定向到命令行参数,因为该程序以交互方式运行.从历史上看,我已经使用xclip将其复制到剪贴板,然后将其粘贴到正在运行的应用程序中,但由于某种原因,这个十六进制序列不允许我使用xclip来复制它(它显示没有被复制).

例如:

perl -e 'print "A"x48; print "\x1b\x88\x04\x08";' | xclip -sel clip
Run Code Online (Sandbox Code Playgroud)

如果我之后按ctrl + V,则不会粘贴任何内容.如果我只是复制并粘贴终端窗口的输出,则会粘贴错误的十六进制(我假设这是因为十六进制不是可见的ASCII).

我的问题是:GDB是否有办法将生成的文本插入到交互式的运行程序中?

我知道如果可利用程序采用命令行参数,我可以这样做:

run $(perl -e 'print "A"x48; print "\x1b\x88\x04\x08";')
Run Code Online (Sandbox Code Playgroud)

但由于它不通过cli参数运行,因此无法使用.

任何帮助都是极好的!

linux buffer gdb overflow

12
推荐指数
1
解决办法
1万
查看次数

带有WHERE子句的SQL COUNT

我有一个似乎很简单的SQL问题,我无法搞清楚.假设我有以下表格:

company: 
    company_id
    company_title

users: 
    user_id
    username

company_owners: 
    company_id
    user_id
Run Code Online (Sandbox Code Playgroud)

现在,可以有多个用户作为公司所有者.以下是一些示例数据:

company:
1, "A Company"
2, "B Company"
3, "C Company"

users:
1, "A User"
2, "B User"
3, "C User"

company_owners:
1,1
1,2
1,3
2,3
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个查询(MySQL),它根据特定的公司所有者获取company_title以及该公司的所有者数量.所以,例如:

示例查询(英文)run:获取"C User"所有者的每个公司的所有者数量:

company_id=1, company_title="A Company", num_owners=3
company_id=2, company_title="B Company", num_owners=1
company_id=3, company_title="C Company", num_owners=0
Run Code Online (Sandbox Code Playgroud)

我试过了:

SELECT COUNT(user_id), company.* FROM `company` 
LEFT JOIN `company_owners` ON company_owners.company_id = company.company_id 
WHERE company_owners.user_id=1 GROUP BY company_id
Run Code Online (Sandbox Code Playgroud)

但这总是给我一个"1"的所有权数字,我假设因为它只计算user_id = 1的行.

有没有人有任何想法?如果需要,我可以提供更多细节.

非常感谢!

mysql sql select left-join

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

buffer ×1

gdb ×1

left-join ×1

linux ×1

mysql ×1

overflow ×1

select ×1

sql ×1