参数化之后还是有sql注入,求教

zoe2019 2016-04-11 06:58:50
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

int SSN = Convert.ToInt32(Request.QueryString["id"]);
SqlCommand cmd =new SqlCommand("SELECT * FROM teachers WHERE id = @uid");
SqlParameter param = new SqlParameter("uid", SqlDbType.Int);
param.Value = SSN;
cmd.Parameters.Add(param);

DataBase db = new DataBase();

SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataTable dt = new DataTable();
dt = db.getDT(cmd);
。。。。。。。。各种label

}
}
...全文
1039 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoe2019 2016-04-14
  • 打赏
  • 举报
回复
引用 49 楼 zoe2019 的回复:
最新进展:sqlmap注入测试总是超时 [17:19:43] [CRITICAL] connection timed out to the target URL or proxy. sqlmap is going to retry the request(s)
每次sqlmap注入测试就超时,然后网站打不开,又登陆服务器重启网站,如此往复,累。。。
加油馒头 2016-04-14
  • 打赏
  • 举报
回复
引用 38 楼 zoe2019 的回复:
[quote=引用 37 楼 jaylongli 的回复:] [quote=引用 23 楼 zoe2019 的回复:] [quote=引用 21 楼 starfd 的回复:] 好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
这个网站不是我做的,好像没有发布,每次都是从服务器上把源文件整个复制下来改好又替换上去。我把改完的Detail.aspx.cscs文件替换服务器的再测试还是一样[/quote] 在那条语句后面加日志功能,打出来看下 感觉你没更新成功。。[/quote] 我把服务器上该页面的内容都删了,只留了一个空文件detail.aspx.cs,结果测试sql注入依然能显示我的数据库名称和管理员名字等,我真是震惊了[/quote] 在执行语句的地方,把语句打出来,被只测试,看到打出来执行的语句是什么? 不可能是参数化的语句
足球中国 2016-04-14
  • 打赏
  • 举报
回复
之前听说过一个工具。只要SQLSERVER的数据库只要开启BROWER服务。开启那个软件就会得到那台服务器的管理员控制权。 不知真假。 只是听说未曾见过。
zoe2019 2016-04-14
  • 打赏
  • 举报
回复
最新进展:sqlmap注入测试总是超时 [17:19:43] [CRITICAL] connection timed out to the target URL or proxy. sqlmap is going to retry the request(s)
zoe2019 2016-04-14
  • 打赏
  • 举报
回复
引用 47 楼 LevinCVT 的回复:
参数式,不可能有注入。你被注入,只能说你还有SQL拼接没处理好。一个最简单 办法: 无论什么东西,拼接前,替换掉单引号。Replace("'","''")
我也觉得我的参数化代码依然有问题,但是实在看不出来,能不能麻烦您看一下? 这是我改过的代码,您看一下写的对吗? protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int SSN = Convert.ToInt32(Request.QueryString["id"]); if ( SSN < 50) { SqlCommand cmd = new SqlCommand("SELECT * FROM teachers WHERE id = @uid"); SqlParameter param = new SqlParameter("uid", SqlDbType.Int); param.Value = SSN; cmd.Parameters.Add(param); DataBase db = new DataBase(); DataTable dt = new DataTable(); dt = db.getDT(cmd); Label1.Text = dt.Rows[0]["tname"].ToString().Trim(); Label2.Text = dt.Rows[0]["zhich"].ToString().Trim(); Label3.Text = dt.Rows[0]["classes"].ToString().Trim(); Label4.Text = " " + dt.Rows[0]["huojiang"].ToString().Trim(); Label5.Text = dt.Rows[0]["contents"].ToString().Trim(); Image1.ImageUrl = "admin/upload/" + dt.Rows[0]["pic"].ToString().Trim(); this.Title = Label2.Text.Trim() + "--" + Label1.Text.Trim() + "详细内容"; Label6.Text = "教师:" + Label1.Text.Trim() + "信息"; } } }
LevinCVT 2016-04-14
  • 打赏
  • 举报
回复
参数式,不可能有注入。你被注入,只能说你还有SQL拼接没处理好。一个最简单 办法: 无论什么东西,拼接前,替换掉单引号。Replace("'","''")
zoe2019 2016-04-14
  • 打赏
  • 举报
回复
引用 44 楼 jaylongli 的回复:
[quote=引用 38 楼 zoe2019 的回复:] [quote=引用 37 楼 jaylongli 的回复:] [quote=引用 23 楼 zoe2019 的回复:] [quote=引用 21 楼 starfd 的回复:] 好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
这个网站不是我做的,好像没有发布,每次都是从服务器上把源文件整个复制下来改好又替换上去。我把改完的Detail.aspx.cscs文件替换服务器的再测试还是一样[/quote] 在那条语句后面加日志功能,打出来看下 感觉你没更新成功。。[/quote] 我把服务器上该页面的内容都删了,只留了一个空文件detail.aspx.cs,结果测试sql注入依然能显示我的数据库名称和管理员名字等,我真是震惊了[/quote] 在执行语句的地方,把语句打出来,被只测试,看到打出来执行的语句是什么? 不可能是参数化的语句[/quote] 不好意思,不太懂,实在sqlmap里面操作吗/?不太懂?
zoe2019 2016-04-14
  • 打赏
  • 举报
回复
引用 42 楼 qq_29339727 的回复:
ASP程序的SQL注入,也应该差不多的,参数化了,在做一个关键字处理试试呢?
这是我改过的代码,您看一下写的对吗? protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int SSN = Convert.ToInt32(Request.QueryString["id"]); if ( SSN < 50) { SqlCommand cmd = new SqlCommand("SELECT * FROM teachers WHERE id = @uid"); SqlParameter param = new SqlParameter("uid", SqlDbType.Int); param.Value = SSN; cmd.Parameters.Add(param); DataBase db = new DataBase(); //SqlDataAdapter sda = new SqlDataAdapter(); //sda.SelectCommand = cmd; DataTable dt = new DataTable(); dt = db.getDT(cmd); Label1.Text = dt.Rows[0]["tname"].ToString().Trim(); Label2.Text = dt.Rows[0]["zhich"].ToString().Trim(); Label3.Text = dt.Rows[0]["classes"].ToString().Trim(); Label4.Text = " " + dt.Rows[0]["huojiang"].ToString().Trim(); Label5.Text = dt.Rows[0]["contents"].ToString().Trim(); Image1.ImageUrl = "admin/upload/" + dt.Rows[0]["pic"].ToString().Trim(); this.Title = Label2.Text.Trim() + "--" + Label1.Text.Trim() + "详细内容"; Label6.Text = "教师:" + Label1.Text.Trim() + "信息"; } } }
  • 打赏
  • 举报
回复
ASP程序的SQL注入,也应该差不多的,参数化了,在做一个关键字处理试试呢?
zoe2019 2016-04-12
  • 打赏
  • 举报
回复
引用 40 楼 sp1234 的回复:
这开发整天换各种玩意儿试一试,没有稳定核心的东西,不靠谱啊
  • 打赏
  • 举报
回复
引用 33 楼 zoe2019 的回复:
[quote=引用 32 楼 qq_29339727 的回复:] 参数化了应该不会被注入的,你本地调试 用那个测试会不会被注入呢?如果本地调试没问题,那么你发布了之后,生成的文件,在发布的文件夹下面的/bin文件夹下面的 web.dll 然后上传到服务器上就行了。
抱歉实在初学不太懂,但是上一个管理员交给我以后好像说没编译就是源文件,刚刚看了服务器上都是asp文件,没有dll 另外,我的参数化代码不知道写得对不对[/quote] 抱歉,没注意看清楚,那你这个是ASP程序?注入的 是查询代码吗?
  • 打赏
  • 举报
回复
这开发整天换各种玩意儿试一试,没有稳定核心的东西,不靠谱啊
zoe2019 2016-04-12
  • 打赏
  • 举报
回复
引用 35 楼 qq_29339727 的回复:
[quote=引用 33 楼 zoe2019 的回复:] [quote=引用 32 楼 qq_29339727 的回复:] 参数化了应该不会被注入的,你本地调试 用那个测试会不会被注入呢?如果本地调试没问题,那么你发布了之后,生成的文件,在发布的文件夹下面的/bin文件夹下面的 web.dll 然后上传到服务器上就行了。
抱歉实在初学不太懂,但是上一个管理员交给我以后好像说没编译就是源文件,刚刚看了服务器上都是asp文件,没有dll 另外,我的参数化代码不知道写得对不对[/quote] 抱歉,没注意看清楚,那你这个是ASP程序?注入的 是查询代码吗?[/quote] asp的网站,没有发布直接用的源代码;诸如测试链接.......detail.aspx?id=10
zoe2019 2016-04-12
  • 打赏
  • 举报
回复
引用 37 楼 jaylongli 的回复:
[quote=引用 23 楼 zoe2019 的回复:] [quote=引用 21 楼 starfd 的回复:] 好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
这个网站不是我做的,好像没有发布,每次都是从服务器上把源文件整个复制下来改好又替换上去。我把改完的Detail.aspx.cscs文件替换服务器的再测试还是一样[/quote] 在那条语句后面加日志功能,打出来看下 感觉你没更新成功。。[/quote] 我把服务器上该页面的内容都删了,只留了一个空文件detail.aspx.cs,结果测试sql注入依然能显示我的数据库名称和管理员名字等,我真是震惊了
加油馒头 2016-04-12
  • 打赏
  • 举报
回复
引用 23 楼 zoe2019 的回复:
[quote=引用 21 楼 starfd 的回复:] 好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
这个网站不是我做的,好像没有发布,每次都是从服务器上把源文件整个复制下来改好又替换上去。我把改完的Detail.aspx.cscs文件替换服务器的再测试还是一样[/quote] 在那条语句后面加日志功能,打出来看下 感觉你没更新成功。。
江南小鱼 2016-04-11
  • 打赏
  • 举报
回复
引用 24 楼 starfd 的回复:
…… aspx生成后是dll,你要替换dll,不是替换aspx 你替换aspx.cs文件,测试时检查的还是原来的代码…… 你把你改后的代码生成下,然后将bin目录下的dll复制到服务器同名的bin目录下,话说不能sqlmap不能测试本机么?你本机VS调试下,然后你的sqlmap直接测你本地不行吗?
撸主应该是修改了本地代码,却一直拿发布的页面测试~
LongRui888 2016-04-11
  • 打赏
  • 举报
回复
引用 22 楼 zoe2019 的回复:
[quote=引用 20 楼 starfd 的回复:] 不要应该是
cmdstr = "select * from teachers where id=" + Request .QueryString ["id"].Trim (); 
这句100%会被注入
SELECT * FROM teachers WHERE id = @uid
这句不可能被注入
你拿一个改过之后不可能被注入的代码来问为啥上一句被注入的代码问题……
不是,我是说这两句都检测出sql注入了,改前改后都一样[/quote] 另外,你在后台,开启sql profiler,监控一下sql语句,看看,经过注入之后,sql是什么样子的
  • 打赏
  • 举报
回复
…… aspx生成后是dll,你要替换dll,不是替换aspx 你替换aspx.cs文件,测试时检查的还是原来的代码…… 你把你改后的代码生成下,然后将bin目录下的dll复制到服务器同名的bin目录下,话说不能sqlmap不能测试本机么?你本机VS调试下,然后你的sqlmap直接测你本地不行吗?
zoe2019 2016-04-11
  • 打赏
  • 举报
回复
引用 21 楼 starfd 的回复:
好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
这个网站不是我做的,好像没有发布,每次都是从服务器上把源文件整个复制下来改好又替换上去。我把改完的Detail.aspx.cscs文件替换服务器的再测试还是一样
  • 打赏
  • 举报
回复
好吧,但你测试的是你改过之后的页面么?你有重新生成发布过么?不要你一直在测试你之前的有注入问题的代码……
加载更多回复(29)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧