如何在Web应用程序中操作视图状态数据?

时间:2017-05-09 07:27:10

标签: security testing penetration-testing

我正在测试一个Web考试,这是一个考勤提交页面。功能是,如果两个用户碰巧更新相同的学生出勤率,我们将在最新的更改时显示更改的警告。

为此,开发人员已经实现了一些逻辑,就像他们将保存我们在文本框中输入的值,这些值尚未保存在视图状态。他们将比较视图状态,当前数据和数据库数据的值并显示最新的更改

作为测试的一部分,我想知道是否存在,以便我可以修改/破解开发人员在视图状态下存储的数据。

1 个答案:

答案 0 :(得分:0)

你不能用javascript做到这一点,你可以通过JavaScript访问隐藏字段“__ViewState”,但它都是加密的。您只能看到加密值。

即使您通过javascript更改它,服务器端也会检查数据是否被篡改。

您可以使用以下代码解密并查看viewstate。为此,必须将ViewState设置为未加密https://hackage.haskell.org/package/base-4.9.1.0/docs/Control-Monad.html#t:MonadPlus

string str = System.Text.Encoding.ASCII.GetString(Convert.FromBase64Strin‌​g(txtViewState.Text)‌​);

但是,由于ASP.NET中默认EnableViewStateMac属性为true,因此无法篡改viewstate。 More Info